一个整型数组中有一半以上的数是相同的,如何找到这个数 一个整型数组中有一半以上的数是相同的,如何找到这个数? 用效率最高的方法, Arrays.sort(a,0,a.length); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 目前我的代码是这样的 int a[] = { 1, 2, 3, 5, 6, 2, 2, 2 }; for (int i = 0; i < a.length; i++) { Arrays.sort(a, 0, a.length); System.out.println(a[i]); }我先排完序了就是不知道该怎样获取2. 其实如果是我的话,根本不排序。直接建立一个HashMap<Integer, Integer>然后for(int i=0; i<a.length; i++) { key就是i,value就是出现次数 某次检查发现value >= a.length,就说明已经找到了} 为性能考虑,可以做一个内部类,避免每次计数都要创建Integer对象,类似于: private static class Counter { private int cnt; public Counter inc() { cnt++; return this; } public int value() { return cnt; } public String toString() { return String.valueOf(cnt); } }这样循环可以简化: Map<Integer, Counter> mapCounter = new HashMap<Integer, Counter>(); for (int i = 0; i < a.length; i++) { Counter cnt = mapCounter.get(a[i]); if (cnt == null) { cnt = new Counter(); mapCounter.put(words[i], cnt.inc()); } else { cnt.inc(); if (cnt.value() >= a.length / 2) break; // 找到了 } } 为什么运行第一次一开始不能显示标签,而运行多次便可以显示标签. 关于数组 给个答案咯 救命啊,各位大哥大们! 有关迭代器的问题,大大的给分 如何用java实现鼠标单击文件后取得该文件的文件名呢? final常量报错,请教? java方法和类的使用权限?????? Textfied的右对齐是怎么实现的 如何转换中文 如何注册JDBC驱动啊!我手头好多的驱动但是我不知道如何的注册这些驱动 java如何实现两台计算机之间文件夹同步更新 菜鸟提问各位高手帮忙不胜感激 java中有没有像C#中分部类那样的方法
int a[] = { 1, 2, 3, 5, 6, 2, 2, 2 };
for (int i = 0; i < a.length; i++) {
Arrays.sort(a, 0, a.length);
System.out.println(a[i]);
}
我先排完序了就是不知道该怎样获取2.
key就是i,value就是出现次数
某次检查发现value >= a.length,就说明已经找到了
}
private int cnt;
public Counter inc() {
cnt++;
return this;
}
public int value() {
return cnt;
}
public String toString() {
return String.valueOf(cnt);
}
}
这样循环可以简化: Map<Integer, Counter> mapCounter = new HashMap<Integer, Counter>();
for (int i = 0; i < a.length; i++) {
Counter cnt = mapCounter.get(a[i]);
if (cnt == null) {
cnt = new Counter();
mapCounter.put(words[i], cnt.inc());
} else {
cnt.inc();
if (cnt.value() >= a.length / 2) break; // 找到了
}
}