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.
主元素,大于n/2,即每出现一个非主元素必有一个主元素相对应
那么每找到两个不同的元素,成对删除,最后剩下的就是主元素
可扩展到寻找大于k/n的元素
寻找一个group,里面都是不一样的K个元素
每找到这么一个group,全部删除
剩下的就是所需要的
class Solution {
public:
int majorityElement(vector<int>& nums) {
int n=nums.size();
int i;
int count=0;
int ans;
for(i=0;i<n;i++)
{
if(count==0)
{
ans=nums[i];
count=1;
}
else
{
if(ans==nums[i])
count=count+1;
else
count=count-1;
}
}
return ans;
}
};