题目链接: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;
}
};

该博客讨论了一种LeetCode上的问题,即如何在一个整数数组中找到主要元素,即占比超过一半的元素。博主提出了一种使用哈希表的方法,在遍历数组的同时记录每个元素出现的次数,最终找到出现次数最多的元素。如果不存在主要元素,则返回-1。此解决方案具有O(N)的时间复杂度和O(1)的空间复杂度。
320

被折叠的 条评论
为什么被折叠?



