这道题可以使用两种方法计算:
1.利用哈希表,将数据当作键值,将次数作为值存入哈希表中。
// 哈希表
unordered_map<int, int> res;
int ans = 0, count = 0;
int len = nums.size();
for(auto &num : nums)
{
++res[num];
if(res[num] > (len / 2))
{
ans = num;
}
}
return ans;
2.利用投票法
主要是判断数组中的每个数据,出现的次数,如果只出现了一次,那么就被淘汰,如果要是出现了过多的次数,那么最后的值就是重复次数最多的
// 投票法
int ans = 0,vote = 0;
for(auto &num : nums)
{
if(vote == 0) ans = num;
vote += num == ans ? 1 : -1;
cout << vote << endl;
cout << ans << endl;
cout << "*****************" << endl;
}
return ans;