思路:抵消法,记录当前元素ret,初始数量为num=0;从前到后遍历,发现遍历到的元素和ret相同,num++, 否则num--, 如果num==0,则ret变成当前元素。
public class MostNum {
public static void main(String[] args) {
int[] array = new int[]{1, 2, 3, 4, 2, 2, 2, 2, 5, 6, 2, 2};
int res = mostNum(array);
System.out.println(res);
}
public static int mostNum(int[] array) {
int num = 0;
int ret = Integer.MIN_VALUE;
for (int i = 0; i < array.length; i++) {
if (ret == array[i]) {
num++;
} else {
if (num == 0) {
ret = array[i];
} else {
num--;
}
}
}
return ret;
}
}
网友评论