解题思路:题目要求空间复杂度为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相关推荐

  1. java求众数_Java实现 LeetCode 229 求众数 II(二)

    229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...

  2. LeetCode 229. 求众数 II(摩尔投票)

    1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...

  3. 【快乐水题】229. 求众数 II

    原题: 力扣链接:229. 求众数 II 题目简述: 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 解题思路 1.通过哈希表来计算出现次数 2.if(k == (n ...

  4. 摩尔投票法(力扣- -229. 求众数 II)

    摩尔投票法(力扣- -229. 求众数 II) 文章目录 摩尔投票法(力扣- -229. 求众数 II) 一.题目描述 二.分析 摩尔投票法 总结 三.代码 一.题目描述 二.分析 这道题如果用O(N ...

  5. 229. 求众数 II

    求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出 ...

  6. leetcode 229. Majority Element II | 229. 求众数 II(找出现次数超过n/k的元素)

    题目 https://leetcode.com/problems/majority-element-ii/ 题解 思路来源于左程云<程序员代码面试指南> 问题描述 原问题:给定一个整型数组 ...

  7. LeetCode 169. 求众数(摩尔投票)

    文章目录 1. 题目信息 2. 解题思路 3. 代码 3.1 排序 3.2 map计数 3.3 摩尔投票 1. 题目信息 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ ...

  8. Leetcode:169. 求众数

    题目链接 求众数 题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: ...

  9. LeetCode 《169+229.求众数》

    题目169: 思路: ① 题目说非空.一定存在众数,这道题忽略题目中的 N/2 就按照众数的真正定义来计算 ② 首先统计给定的List中每个元素出现的次数,以k/v的方式存到字典中 ③ 然后遍历字典, ...

最新文章

  1. apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
  2. 隐藏tabwidgt 用radiogroup来实现tab的切换
  3. [翻译] WPAttributedMarkup
  4. 2017-9-17pat甲级 B
  5. eclipse 设置 content type 编码格式
  6. leetcode(2)---两数相加
  7. 第五章 面向方面编程___AOP入门
  8. 2016蓝桥杯省赛---java---B---2(生日蜡烛)
  9. leetcode 69. x 的平方根 思考分析
  10. java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西
  11. 字节跳动高工面试:mysql主从复制延迟
  12. 常用应用层传输协议和端口
  13. js调用后台,后台调用前台等方法总结
  14. 万字长文丨大白话带你由浅入深Python编程语言
  15. 实用的数据可视化工具大集合
  16. 数理统计:方差分析与正交试验设计
  17. android短信验证码免费版,短信验证码功能-免费哦!亲测可用
  18. 利用网线实现电脑间超大文件传输
  19. CTC blank 理解
  20. MySQL从入门到放弃(三)

热门文章

  1. 学了python可以干嘛-学 Python 都用来干嘛的?
  2. 学python能赚钱吗-哪种Python程序员最赚钱?爬虫数据告诉你!
  3. python画折线图-python如何画折线图
  4. Vue中watch监听数据变化以及watch中各属性详解
  5. word页面顺序倒过来_Word里的表格,行之间的顺序如何颠倒过来?
  6. 【java笔记】泛型定义和使用
  7. 【动态规划】多重背包问题:P1077摆花
  8. FFmpeg源代码简单分析:configure
  9. html页面转pdf
  10. idea 使用神坑之索引篇(自定义不创建索引文件夹)