您的位置:首页 > 其它

[LeetCode-169] Majority Element(找出数组中超过一半元素)

2015-10-06 15:45 344 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode