使用摩尔选举,遇到与res一致的,就增加num;反之,减少num
如果,num = 0,那么就更新res为当前的数组值。
public class Solution {
public int MoreThanHalfNum_Solution(int[] array) {
// 使用摩尔选举
int res = array[0], num = 0;
for (int i = 0; i < array.length; ++i) {
if (num == 0) {
res = array[i];
num++;
} else if (array[i] == res) {
num++;
} else {
num--;
}
}
return res;
}
}

京公网安备 11010502036488号