Majority Element,Moore's Voting
遍历一次,保存一个长度为k - 1的数组:
最后数组中剩下的数,就是candidate,每个统计一下就可以了
这个方法可以解决任意1/k的majority number
public class Solution {
public int majorityElement(int[] num) {
int major=num[0], count = 1;
for(int i=1; i<num.length;i++){
if(count==0){
count++;
major=num[i];
}else if(major==num[i]){
count++;
}else count--;
}
return major;
}
}Moore's Voting Algorithm.
(Google) Majority Element
解决办法就是依次检查所有可能的出现 majority element 的位置 [n/k,2n/k, .... ,n] ,在每个位置上根据当前元素做 search for range,O(log n),如此重复最多 k 次即可。
Last updated