LeetCode - 169. Majority Element
来源:互联网 发布:网络机顶盒排行榜 编辑:程序博客网 时间:2024/06/15 04:02
这道题的目的是找到数组中出现次数大于一半的数字,一开始的想法是使用一个HashMap记录各个数字出现的次数,然后从中找到出现次数大于nums.length / 2的数字,这种方法比较直接,但是使用了O(n)的额外空间,算不上是最好的方法。
LeetCode的discuss版里有人提出了一个更好的解法,我们首先把majority element设置为数组的第一个数字,并且把数字出现的次数设置为count = 1,然后从第二个数字开始向后扫描,如果遇到的数字与majority element相等,那么count++,否则count--,如果count == 0,那么把majority element设置为当前的元素并且把count设置为1。这个算法的总体思想就是使用出现次数大于nums.length / 2的元素去抵消其他的元素,那么最后留下的一定是出现次数大于nums.length / 2的元素。代码如下:
public class Solution { public int majorityElement(int[] nums) { if(nums == null || nums.length == 0) return 0; int majorElem = nums[0]; int count = 1; for(int i = 1; i < nums.length; i++){ if(nums[i] == majorElem) count++; else if(nums[i] != majorElem) count--; if(count == 0){ majorElem = nums[i]; count++; } } return majorElem; }}
0 0
- [LeetCode]169.Majority Element
- LeetCode 169.Majority Element
- 【LeetCode】169.Majority Element
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- [leetcode] 169.Majority Element
- Leetcode 169. Majority Element
- 【LeetCode】169. Majority Element
- [LeetCode]169. Majority Element
- 169. Majority Element LeetCode
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- Leetcode 169. Majority Element
- [LeetCode]169. Majority Element
- 【LeetCode】169. Majority Element
- leetcode 169. Majority Element
- leetcode 169. Majority Element
- [leetcode] 169. Majority Element
- Android自定义View
- 《转》LTE S1接口控制面面为什么使用SCTP,而不用TCP
- 【Git】'ssh-keygen' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 关于解析图片
- centos 安装 mysql
- LeetCode - 169. Majority Element
- 派生类中构造函数与虚构函数的研究
- Apache Commons Email组件介绍使用
- 百练 10 迷宫问题
- leetcode No49. Group Anagrams
- Belarusian State University & Kazakhstan Contest D Contest
- STM32学习笔记之中断向量表,MDK程序启动分析
- 以下代码共调用多少次拷贝构造函数:
- pair与排序