一种方法是排序取中,一种是哈希表存储,都比较简单想到和实现
这里看到了一个叫做摩尔投票法的算法:
- 数组中一定要有过半数的数字才能使用
- 将数组中的第一个数假设为过半数
- 进行统计其出现的次数,如果遇到同样的数,则计数器自增1,否则计数器自减1,如果计数器减到了0
- 则更换下一个数字为候选者。重复3
class Solution
{
public:
int majorityElement(vector<int> &nums)
{
int curMor = nums[0];
for (int i = 1, count = 1; i < nums.size(); i++)
{
nums[i] == curMor ? ++count : --count;
if (count == 0)
{
curMor = nums[i];
++count;
}
}
return curMor;
}
};