229 Majority Element II 求众数 II
给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 你的算法应该在O(1)空间中以线性时间运行。
详见:https://leetcode.com/problems/majority-element-ii/description/
摩尔投票法 Moore Voting
Java实现:
- class Solution {
- public List<Integer> majorityElement(int[] nums) {
- List<Integer> res=new ArrayList<Integer>();
- if(nums==null||nums.length==0){
- return res;
- }
- int a=nums[0],cnta=0;
- int b=nums[0],cntb=0;
- for (int num : nums) {
- if (num == a) {
- ++cnta;
- }else if(num == b) {
- ++cntb;
- }else if(cnta == 0) {
- a = num;
- cnta=1;
- }else if(cntb == 0) {
- b = num;
- cntb=1;
- }else{
- --cnta;
- --cntb;
- }
- }
- cnta=0;
- cntb=0;
- for(int num:nums){
- if(num==a){
- ++cnta;
- }else if(num==b){
- ++cntb;
- }
- }
- if(cnta>nums.length/3){
- res.add(a);
- }
- if(cntb>nums.length/3){
- res.add(b);
- }
- return res;
- }
- }
C++实现:
- class Solution {
- public:
- vector<int> majorityElement(vector<int>& nums) {
- vector<int> res;
- int m = 0, n = 0, cm = 0, cn = 0;
- for (auto &a : nums)
- {
- if (a == m)
- {
- ++cm;
- }
- else if (a ==n)
- {
- ++cn;
- }
- else if (cm == 0)
- {
- m = a, cm = 1;
- }
- else if (cn == 0)
- {
- n = a, cn = 1;
- }
- else
- {
- --cm, --cn;
- }
- }
- cm = cn = 0;
- for (auto &a : nums)
- {
- if (a == m)
- {
- ++cm;
- }
- else if (a == n)
- {
- ++cn;
- }
- }
- if (cm > nums.size() / 3)
- {
- res.push_back(m);
- }
- if (cn > nums.size() / 3)
- {
- res.push_back(n);
- }
- return res;
- }
- };
参考:https://www.cnblogs.com/grandyang/p/4606822.html
229 Majority Element II 求众数 II的更多相关文章
- Leetcode#169. Majority Element(求众数)
题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...
- 229. Majority Element II求众数II
网址:https://leetcode.com/problems/majority-element-ii/ 参考:https://blog.csdn.net/u014248127/article/de ...
- leetcode 169. Majority Element 、229. Majority Element II
169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) class Solution { public: int ma ...
- 229. 求众数 II
Q: 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: [3 ...
- 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] Majority Element II 求众数之二
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
- 【刷题-LeetCode】229. Majority Element II
Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ...
- 【LeetCode】229. Majority Element II
Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ...
随机推荐
- Office PDF如何旋转页面之后保存
直接视图-旋转视图-逆时针,是不行的,旋转之后无法保存,另存为之后也再打开也没有效果. 要点击视图-工具-页面 然后在右边的菜单中点击旋转,然后执行旋转,然后就可以保存了.
- A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包
A7139 拥有电磁波唤醒以及10mW的发射功率,很easy实现长距离通信,眼下測试有障碍物能够轻松达到300m以上. 通过几天的调试,眼下能够发送随意大小的数据包,大小为1-16KB.所有使用中断收 ...
- 数据结构与算法问题 AVL二叉平衡树
AVL树是带有平衡条件的二叉查找树. 这个平衡条件必须保持,并且它必须保证树的深度是O(logN). 一棵AVL树是其每一个节点的左子树和右子树的高度最多差1的二叉查找树. (空树的高度定义为-1). ...
- 【iOS系列】-使用CAGradientLayer设置渐变色
有时候iOS开发中需要使用到渐变色,来给图片或者view盖上一层,使其显示效果更好,我们这里使用的CAGradientLayer来设置渐变色 要实现的效果如下: Demo地址---下载 // 创建渐变 ...
- SQLServer导出导出单表数据
1.SQLServer导出单表数据为TXT文件 数据库--任务--导出数据
- make eval builtin function
1 eval的返回值是空字符串,因此它可以用于Makefile的任何位置而不引起错误 2 eval函数的作用效果 生成Makefile的动态部分,即eval用于增加Makefile的构成部分. 也就是 ...
- Filter 详解
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- 在调试状态查看DateTable里的数据信息
- mongo04---基本查询
核心: mongod: 数据库核心进程 mongos: 查询路由器,集群时用 mongo: 交互终端(客户端) 二进制导出导入: mongodump:导出bson数据 mongorestore: 导入 ...
- beego6
package main //beego使用的是go语言原生的模版 import ( //_ "beego1/routers" //默认controll文件夹里面的控制器 &quo ...