-----------------------------------
Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩下一个元素的时候(事实上只要满足一个元素出现过半就一定会剩下一个元素的)这个元素就是我们要找的数了。
AC代码:
public class Solution {
/**
* @param nums: a list of integers
* @return: find a majority number
*/
public int majorityNumber(ArrayList<Integer> nums) {
int e, count;
e=count=0;
for(int i=0;i<nums.size();i++){
if(count==0){
e=nums.get(i);
count++;
}else{
if(e==nums.get(i)){
count++;
}else{
count--;
}
}
}
return e;
}
}
题目来源: http://www.lintcode.com/zh-cn/problem/majority-number/