LeetCode Majority Element
来源:互联网 发布:matlab2015 mac破解版 编辑:程序博客网 时间:2024/06/04 01:14
LeetCode解题之Majority Element
原题
给定一个非空的数组,其中某一数值的数量超过数组长度的一半,请找出这个值。
注意点:
- 无
例子:
输入: nums = [1, 2, 2, 3, 3, 3, 3]
输出: 3
解题思路
可以通过哈希表记录每个数值出现的次数并找出出现次数最多的数值。不过有一个比较巧妙的思路是,就是不断将数组中两两不同的数同时去除,极端情况是每个其他数值都与一个数量最多的数同时去除,即使这样,最后剩下的数值也是那个数量超过总数一半的数值。具体实现来看,我们可以把需要抵消的数值存起来,并记录它的数量,这个数量表示它还能抵消掉几个不同的数值。遇到与它不同的数值就减一,遇到相同的就加一。如果数量变为0,那说明这个数暂时已经完全去除了。我们可以用下一个数值继续与其它的数值相抵消。遍历完整个数组后,还没抵消掉的数值就是要求的结果。
AC源码
class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int """ result = None count = 0 for num in nums: if count == 0: result = num if result == num: count += 1 else: count -= 1 return resultif __name__ == "__main__": assert Solution().majorityElement([1, 2, 2, 3, 3, 3, 3]) == 3 assert Solution().majorityElement([3, 3, 3, 3, 1, 1, 2]) == 3
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
0 0
- 【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
- [LeetCode] Majority Element
- Leetcode-Majority Element
- [leetcode]Majority Element
- [LeetCode]Majority Element
- Leetcode: Majority Element
- 快速学习者的高效学习策略
- 欢迎使用CSDN-markdown编辑器
- LDA模型学习笔记
- MyBatis XML 映射配置文件
- Hdu oj 2553 N皇后问题(回溯加预处理)
- LeetCode Majority Element
- SICP 练习1.28
- c++11 内存模型解读
- C# 窗体间传值方法大汇总(转)
- EditText左右抖动,内容变化监听和手机震动
- 文本挖掘
- Linux中的线程锁与条件变量
- 【BZOJ4057】【Cerc2012】Kingdoms 状压DP
- Linux下php+nginx环境的搭建