leetcode笔记:Majority Element
来源:互联网 发布:网络直销流程五步 编辑:程序博客网 时间:2024/06/18 14:37
一. 题目描述
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋
times.
You may assume that the array is non-empty and the majority element always exist in the array.
二. 题目分析
题目说到,给定一个数组,内含n
个元素。找出一个主元素,该元素在数组中出现的次数比其他元素出现的次数加起来还要多,即该元素的数量大于n/2
。
开始的思路,自然是对数组进行排序,数组最中间的元素就是主元素,但算法复杂度一般需要:O(nlogn)
;若允许辅助内存,可新建一个数组,用于存放不同元素值在数组中存放的次数,这样只需遍历一次原数组,然后再遍历一次记录次数的数组就可找出主元素,算法复杂度为O(n)
。
一种高效的方法只需遍历一次数组即可。我们知道主元素出现的次数比其他元素出现的次数和还要大,因此,只需使用两个变量:candidate
和 count
这两个变量记录了元素candidate
的值,count
记录了元素candidate
比其他元素多出现的次数。
遍历数组,遇到与当前记录元素candidate
相同的元素值,++count
;否则count
被抵消一次,--count
。当count
变为0
时,更换candidate
为当前遍历所在的像素值。
由于遍历完数组后,主元素被抵消的次数count
比然大于零,不会因为当count
变为0
而被其他数组元素替代,因此candidate
也只会是主元素。
三. 示例代码
class Solution {public: int majorityElement(vector<int>& nums) { int candidate = 0, count = 0; for (int i = 0; i < nums.size(); ++i) { if (count == 0) { candidate = nums[i]; ++count; } else { if (candidate == nums[i]) ++count; else --count; } } return candidate; }};
- leetcode笔记:Majority Element
- leetcode笔记:Majority Element II
- LeetCode笔记:169. Majority Element
- leetcode笔记--Majority Element I & II
- 小白笔记-------------------------------leetcode(169. Majority Element)
- 【leetcode】Majority Element II,Majority element algorithm
- Leetcode: Majority Element &Majority Element II
- Leetcode Majority Element
- leetcode 169-Majority Element
- 【leetcode 哈希表】Majority Element
- LeetCode:Majority Element
- leetcode:Majority Element
- leetcode: Majority Element
- [LeetCode] Majority Element
- leetcode 153: Majority Element
- leetcode Majority Element
- LeetCode:Majority Element
- leetcode:Majority Element
- sbt构建scala工程并导入scala-eclipse开发spark
- False Positives和False Negative等含义
- 预览Android layouts, custom views和animations的插件
- 分享一个链接
- data too long for column 'name' at row 1的解决办法
- leetcode笔记:Majority Element
- NSUrl读取网络资源
- Androidx学习笔记(44)--- 多线程断点续传(Android项目)
- 开启QtCreator的代码自动补全功能
- log4j【1】(使用xml还是使用properties)
- [剑指offer-1385]重建二叉树
- 字符串反转的7种方式
- log4j【2】(Category与Logger )
- JAVA面试题