您的位置:首页 > 其它

LeetCode探索之旅(40)-169最大元素

2019-03-12 15:57 330 查看

继续刷LeetCode,第169题,求一个非空数组中,出现次数最大的那个元素,并且这个元素假设一定存在。

分析:
1、如果借用辅助空间,可以建立一个hash表来找到每个元素对应出现的次数,那么出现次数最多的那个元素就可以很容易求出来。
2、不用辅助空间,在O(n)的时间内,通过数组中的元素个数关系,每次比较临时元素与遍历到的元素是否相等,如果相等,那么统计变量加一,如果不相等,统计变量减一,如果统计变量等于0的时候,就更改临时元素。因为出现次数最多的元素,出现次数大于整个数组的一半,那么最后统计变量必大于0,这个时候的临时元素也就是出现次数最多的那个元素。

问题:
1、如果最大元素不存在的情况;
2、为空的情况;

附上代码:

class Solution {
public:
int majorityElement(vector<int>& nums) {
int tmp=nums[0];
int count=1;
for(int i=1;i<nums.size();i++)
{
if(count==0)
tmp=nums[i];
if(nums[i]==tmp)
count++;
else
count--;
}
return tmp;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: