Moore’s Voting Algorithm
这个算法是用来找出在数列中出现次数过半的数。
他采用的基本思想是每次都从数组中找出不同的一对数,然后删除,最后留下的就是我们要找的数。
例子:http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html
169. Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋
times.
You may assume that the array is non-empty and the majority element always exist in the array.
class Solution {
public:
int majorityElement(vector<int>& nums) {
int count=0;
int num;
for(int i=0;i<nums.size();i++)
{
if(count==0)
{
num=nums[i];
count++;
}
else
{
num==nums[i]?count++:count--;
if(count>(nums.size()/2))
{
return nums[i];
}
}
}
return num;
}
};