一支穿云箭 千军万马来相见

2018-08-10 11:52:42 +08:00
 jinYangChen

找出目标数组中重复出现次数最少的两个数,求一个好点的思路,考虑效率问题
目前我的思路是:

int[] target = {7, 9, 8, 7, 8, 9, 7, 8, 8, 4, 9, 8, 3, 4, 2, 3, 1, 1, 1, 2, 1};
//声明 map 容器
Map<Integer, Integer> maps = new TreeMap<>();
for (int i = 0; i < target.length; i++) {
   int value = target[i];
   //判断该值在 map 里面是否存在
   if (maps.containsKey(value)) {
      //加 1
      maps.replace(value, maps.get(value), maps.get(value) + 1);
   } else {
      maps.put(value, 1);
   }
}
//把 map 转 list
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(maps.entrySet());
//自定义排序
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
   @Override
   public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
       return o1.getValue().compareTo(o2.getValue());
   }
});
System.out.println("重复出现次数最小的两个数分别为:" + list.get(0).getKey() + "," + list.get(1).getKey());
604 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/478553

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX