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; } };
相关文章推荐
- [LeetCode] 169. Majority Element 多数元素
- LeetCode215. python实现:数组中的第K个最大元素问题☆☆
- LeetCode探索之旅(61)-217重复元素
- leetcode 628. Maximum Product of Three Numbers 最大的三个元素之积 + 暴力分析
- LeetCode-643:Maximum Average Subarray I (k个元素的最大子数组)
- leetcode 05 最长相同元素之间的的最大字符串 && 06 Z形字符串排序
- LeetCode 169. Majority Element (数组的主要元素、摩尔投票算法)
- leetcode——169 Majority Element(数组中出现次数过半的元素)
- [LeetCode Problem]169:Majority Element查找多数元素
- Leetcode740. 删除元素获取最大值
- [LeetCode] House Robber 求数组中元素两两不相邻的子序列最大和
- [Leetcode] 215. 数组中的第K个最大元素 java
- LeetCode探索之旅(57)-203删除链表中元素
- leetcode 164. Maximum Gap 相邻元素的最大间隔 + 一个很好的桶排序示范
- LeetCode 题解 169. Majority Element(查找多数元素)
- [LeetCode]169. Majority Element(多数元素)
- [LeetCode] House Robber II 求循环数组中元素两两不相邻的子序列最大和
- 【LeetCode-面试算法经典-Java实现】【169-Majority Element(主元素)】
- LeetCode-169:Majority Element (数组中的多数元素)
- 每天一道LeetCode----从数组中选择若干不连续元素使得总和最大