一个整型数组中有一半以上的数是相同的,如何找到这个数? 用效率最高的方法, Arrays.sort(a,0,a.length);
解决方案 »
- 十万火急,碰到一个很麻烦的问题,要不然我这个项目没法完成啦!(100分求大家)
- 获取字符串中不相同的字符重新组成字符串!!
- Linux下的JPasswordField无法输入的问题,怀疑是Java的bug
- 怎么样输入字符串啊?
- 高手请指教~给分
- 学习资料(免费)
- james启动报错,说这个类找不到 :com.microsoft.jdbc.sqlserver.SQLServerDriver。请问应该如何解决?
- 连Oracle数据库的问题,急需解决
- 各位大虾,请问哪里有JDK API的chm格式的help下载,感激不禁!
- 奇怪!Help!
- 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; // 找到了
}
}