题目链接:https://leetcode-cn.com/problems/find-majority-element-lcci/
题意:数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。
方法:哈希表存储数字出现的次数。
class Solution {
public:
int majorityElement(vector<int>& nums) {
unordered_map<int,int> mp;//哈希表
for(auto &num:nums){//出现的数,哈希表对应项次数加一
mp[num]++;
}
int ret=0;//返回的数
int cnt=0;//计数
for(int i=0;i<nums.size();i++)
{
if(mp[nums[i]]>cnt)//保存最大的计数,保存对应的返回数字
{
cnt = mp[nums[i]];//
ret = nums[i];//
}
}
if(cnt>nums.size()/2) return ret;
else return -1;
}
};