您的位置:首页 > 其它

LeetCode : Majority Element

2017-02-28 23:02 351 查看
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) {
map<int,int>m;
for(int i=0;i<nums.size();++i)
{
if(m.find(nums[i])==m.end())
m[nums[i]] = 1;
else
m[nums[i]]++;
if(m[nums[i]]>nums.size()/2)
return nums[i];
}
return 0;
}
};
//或者选举算法,时间复杂度是线性的
int majorityElement(vector<int> &num) {
int majority;
int cnt = 0;
for(int i=0; i<num.size(); i++){
if ( cnt ==0 ){
majority = num[i];
cnt++;
}else{
majority == num[i] ? cnt++ : cnt --;
if (cnt >= num.size()/2+1) return majority;
}
}
return majority;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode