摩尔投票法 / Boyer-Moore投票算法
- 设置一个候选人和一个计数器count。
- 遍历数组,每次遇到和候选人一样的值则count + 1,否则count - 1
- 当count == 0 时替换候选人。最后剩下的就是我们所求的众数。
public int majorityElement(int[] nums) {
int n = nums.length;
int candicate = 0;
int count = 0;
for(int i=0;i<n;i++) {
if(count==0) {
candicate = nums[i];
count = 1;
continue;
}
if(nums[i]==candicate) {
count++;
}else {
count--;
}
}
return candicate;
}