方法二:通过索引记录——摩尔投票法
通过记录一个次数times,
如果当前数字和下一个数字结果不相等,则times–
如果相同则times++
最后的保存的结果就是超过一半的数
class Solution {
public:
int majorityElement(vector<int>& nums) {
if( nums.size() == 0 )
return 0;
int result = nums[0];
int times = 1;
for( int i = 1; i < nums.size(); i++)
{
if( nums[i] == result )
times++;
else if( times == 0)
result = nums[i];
else
times--;
}
return result;
}
};
方法三:哈希表查找
class Solution {
public:
int majorityElement(vector<int>& nums) {
if( nums.size() == 0 )
return 0;
unordered_map<int,int> record;
for( auto num : nums)
{
record[num]++;
if( record[num] > (nums.size() / 2) )
return num;
}
return 0;
}
};