方法一:摩尔投票法,时间复杂度O(n)
class Solution {
public:
int majorityElement(vector<int>& nums) {
int count=0,key;
for(int i=0;i<nums.size();++i)
{
if(count==0)key=nums[i];
count+=(nums[i]==key)?1:-1;
}
return key;//返回剩余还有票数的键值
}
};
方法二:暴力求解法,时间复杂度O(n^2)
class Solution {
public:
int majorityElement(vector<int>& nums) {
int count,n=nums.size()/2;
for(int i=0;i<nums.size();++i)
{
count=1;
for(int j=1;j<nums.size();++j)
{
if(nums[i]==nums[j])count++;
}
if(count>n)return nums[i];//只要找打大于size/2的众数就返回
}
return 0;
}
};