[leetcode]229. 求众数 II
解题思路:题目要求空间复杂度为O(1)
大于1/3
的数不会超过2
个,利用Boyer-Moore
投票算法找到数量最多的两个数,再检查下这俩个数的数量有没有超过1/3
class Solution {public:vector<int> majorityElement(vector<int>& nums) {vector<int>res;int cnt1, num1, cnt2, num2;cnt1 = cnt2 = 0;num1 = num2 = INT_MAX;for(int i = 0; i < nums.size(); i++){if(num1 == nums[i]){cnt1++;}else if(num2 == nums[i]){cnt2++;}else if(cnt1 == 0){num1 = nums[i];cnt1++;}else if(cnt2 == 0){num2 = nums[i];cnt2++;}else{cnt1--;cnt2--;}}//检查得到的两个数有没有超过1/3cnt1 = cnt2 = 0;for(int i = 0; i < nums.size(); i++){if(num1 == nums[i]) cnt1++;else if(num2 == nums[i]) cnt2++;}if(cnt1 > nums.size()/3) res.push_back(num1);if(cnt2 > nums.size()/3) res.push_back(num2);return res;}
};
[leetcode]229. 求众数 II相关推荐
- java求众数_Java实现 LeetCode 229 求众数 II(二)
229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...
- LeetCode 229. 求众数 II(摩尔投票)
1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...
- 【快乐水题】229. 求众数 II
原题: 力扣链接:229. 求众数 II 题目简述: 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 解题思路 1.通过哈希表来计算出现次数 2.if(k == (n ...
- 摩尔投票法(力扣- -229. 求众数 II)
摩尔投票法(力扣- -229. 求众数 II) 文章目录 摩尔投票法(力扣- -229. 求众数 II) 一.题目描述 二.分析 摩尔投票法 总结 三.代码 一.题目描述 二.分析 这道题如果用O(N ...
- 229. 求众数 II
求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出 ...
- leetcode 229. Majority Element II | 229. 求众数 II(找出现次数超过n/k的元素)
题目 https://leetcode.com/problems/majority-element-ii/ 题解 思路来源于左程云<程序员代码面试指南> 问题描述 原问题:给定一个整型数组 ...
- LeetCode 169. 求众数(摩尔投票)
文章目录 1. 题目信息 2. 解题思路 3. 代码 3.1 排序 3.2 map计数 3.3 摩尔投票 1. 题目信息 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ ...
- Leetcode:169. 求众数
题目链接 求众数 题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: ...
- LeetCode 《169+229.求众数》
题目169: 思路: ① 题目说非空.一定存在众数,这道题忽略题目中的 N/2 就按照众数的真正定义来计算 ② 首先统计给定的List中每个元素出现的次数,以k/v的方式存到字典中 ③ 然后遍历字典, ...
最新文章
- apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
- 隐藏tabwidgt 用radiogroup来实现tab的切换
- [翻译] WPAttributedMarkup
- 2017-9-17pat甲级 B
- eclipse 设置 content type 编码格式
- leetcode(2)---两数相加
- 第五章 面向方面编程___AOP入门
- 2016蓝桥杯省赛---java---B---2(生日蜡烛)
- leetcode 69. x 的平方根 思考分析
- java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西
- 字节跳动高工面试:mysql主从复制延迟
- 常用应用层传输协议和端口
- js调用后台,后台调用前台等方法总结
- 万字长文丨大白话带你由浅入深Python编程语言
- 实用的数据可视化工具大集合
- 数理统计:方差分析与正交试验设计
- android短信验证码免费版,短信验证码功能-免费哦!亲测可用
- 利用网线实现电脑间超大文件传输
- CTC blank 理解
- MySQL从入门到放弃(三)