229. 求众数 II
Q:
给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
示例 1:
输入: [3,2,3]
输出: [3]
示例 2:
输入: [1,1,1,3,3,2,2,2]
输出: [1,2]
A:
一个叫摩尔投票的算法,可以在一次遍历中找出一个数组中的众数(出现次数一半以上的)。通过设置一个计数器和当前‘众数’,若再遇到当前众数计数器加1,遇到其他数字减一,计数器归零时更新当前众数。巧妙之处是每次归零时前面划去的元素都是一半为之前的众数,一半为其他,故剩下的元素序列的众数依然为原来整个序列的众数。
#
# @lc app=leetcode.cn id=229 lang=python3
#
# [229] 求众数 II
#
from collections import defaultdict
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
candidate1,candidate2=None,None
cnt1,cnt2=0,0
l=len(nums)
for num in nums:
if num==candidate1:
cnt1+=1
elif num==candidate2:
cnt2+=1
elif cnt1==0:
candidate1=num
cnt1=1
elif cnt2==0:
candidate2=num
cnt2=1
else:
cnt1-=1
cnt2-=1
return [x for x in [candidate1,candidate2] if nums.count(x)>l//3]
229. 求众数 II的更多相关文章
- Java实现 LeetCode 229 求众数 II(二)
229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...
- Leetcode 229.求众数II
求众数II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...
- LeetCode 229. 求众数 II(Majority Element II )
题目描述 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...
- 229. Majority Element II求众数II
网址:https://leetcode.com/problems/majority-element-ii/ 参考:https://blog.csdn.net/u014248127/article/de ...
- 229 Majority Element II 求众数 II
给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 你的算法应该在O(1)空间中以线性时间运行. 详见:https://leetcode.com/problems/major ...
- [Swift]LeetCode229. 求众数 II | Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
- LeetCode 求众数 II
题目链接:https://leetcode-cn.com/problems/majority-element-ii/ 题目大意: 略. 分析: k个一起删, 最后check一下即可. 代码如下: #d ...
- leetcode 169. Majority Element 、229. Majority Element II
169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) class Solution { public: int ma ...
- Leetcode#169. Majority Element(求众数)
题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...
随机推荐
- Spring里面AOP的和IOC的理解
1.Spring里面AOP的理解:https://www.cnblogs.com/hongwz/p/5764917.html例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心 ...
- Qt多线程实现思路一
实现一个线程开启时,时间计时器任然能够计数,两路独立工作的线程功能.从类的帮助文件中可以看到如下信息,静态公共成员函数和保护类型的函数,在静态函数中有睡眠函数msleep毫秒级,sleep秒级,usl ...
- 2019-2020-2 《网络对抗技术》Exp0 环境搭建-Kali Linux 的安装
2019-2020-2 20175334 环境搭建-Kali Linux 的安装 一.Kali的下载与安装 在Kali官网中下载镜像文件 打开Vmware开始创建新虚拟机 选择镜像文件 选择操作系统 ...
- 关闭visual studio code 智能提示功能
对于程序初学者来说,应该少用IDE的提示功能,因为这样有助于记住一些常用的函数等功能.这也是为什么戏称喜欢用notepad++(windows)或者vim编辑器(Linux)来开发代码是大神的原因,而 ...
- loj6277 数列分块入门题1
裸题分块. #include <bits/stdc++.h> using namespace std; ],b[],n,m,t1,t2,t3,t4,sq; int main(){ ios: ...
- print不是函数
对文章阅读有感!!! 文章地址:http://www.laruence.com/2019/03/01/4904.html print是一个语法结构(language constructs), 他并不是 ...
- [转]memory analyzer 使用方法
[转]http://wensong.iteye.com/blog/1986449 最近一段时间一直在研究热部署,热部署中涉及到一个比较头痛的问题就是查内存泄露(Memory Leak),于是乎在研究热 ...
- 【转】idea远程调试
适用于web服务,thrift服务 对于分布式系统的调试不知道大家有什么好的方法.对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时.今天咱们来了解 ...
- 1级迁移类Q101-Oracle ASM 迁移文件系统(File System)非公
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- ASP.NET MVC4中对JS和CSS的引用
https://www.cnblogs.com/madyina/p/3702314.html ASP.NET MVC4中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: < ...