169. Majority Element
来源:互联网 发布:文件制作软件 编辑:程序博客网 时间:2024/06/03 15:23
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.
分析摘自
http://www.bubuko.com/infodetail-606702.html
http://www.bubuko.com/infodetail-541502.html
Moore投票算法: 我们维护一个当前的候选众数和一个初始为0的计数器。遍历数组时,我们看当前的元素x:
如果计数器是0, 我们将候选众数置为 x 并将计数器置为 1
如果计数器非0, 我们根据x与当前的候选众数是否相等对计数器+1或者-1
一趟之后, 当前的候选众数就是所求众数. 时间复杂度 = O(n).
对于Majority Element来说,它的个数超过了所有其它元素的总和。所以,对一个数遇到的次数进行计数,遇到相同的,次数加1,遇到不同的次数减1。如果计数值为0了,那么换一个数组中的元素进行计数,直到最后剩下计数值不为0的元素,就是要找的。可以想想,假若之前出现过其它的元素用于计数,设为a,那么a的次数肯定会被减为0;而若中间出现过Majority Element,但是计数被减为0了,这里可以想想,剩下的元素中,Majority Element剩余的个数肯定也是大于剩余长度的一半的,因为既然前面都被消灭光了,前面出现的次数肯定小于等于前面长度的一半,剩余的长度里面出现的次数肯定大于剩余长度的一半。
public int majorityElement(int[] nums) { int count=0, ret = 0; for (int num: nums) { if (count==0) ret = num; if (num!=ret) count--; else count++; } return ret; }
- 169.Majority Element && 229. Majority Element II
- [LeetCode]169.Majority Element
- LeetCode 169.Majority Element
- 【LeetCode】169.Majority Element
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- 169.Majority Element
- [leetcode] 169.Majority Element
- 169. Majority Element
- Leetcode 169. Majority Element
- 【LeetCode】169. Majority Element
- [LeetCode]169. Majority Element
- 169. Majority Element LeetCode
- 169. Majority Element
- 169. Majority Element
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- Leetcode 169. Majority Element
- 1016. 部分A+B (15)
- 使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示
- 线程汇总(1)
- CC2541(主UART)-CC2541(从UART)串口透传实验
- SeekBar控件笔记
- 169. Majority Element
- 1009
- Guava Predicate
- IOS的用户数据本地保存
- 文章标题
- SM30里如何输入物料号自动带出物料描述
- iOS JSON转Model的库 MJExtension的基本使用指导
- 平凡而又不同
- Github创建SSH密钥