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.
【分析】
每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。
可扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除。
代码如下:
int majorityElement(int* nums, int numsSize)
{
if(!nums)
return -1;
int i = 0;
int count = 0 ;
int majorityElement;
for(i = 0;i < numsSize;i++) {
if(count == 0) {
majorityElement = nums[i];
count ++;
}
else {
if(majorityElement == nums[i]) {
count ++;
}
/*If they are different,double free*/
else {
count --;
}
}
}
return majorityElement;
}