1. 题目

给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。

说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)

示例 1:
输入: [3,2,3]
输出: [3]
示例 2:
输入: [1,1,1,3,3,2,2,2]
输出: [1,2]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

为了满足题目要求的复杂度,不能排序。
使用摩尔投票法

代码写的不优美,见谅。

class Solution {public:vector<int> majorityElement(vector<int>& nums) {int n = nums.size(), cA = 0, cB = 0;int numA, numB, i;for(i = 0; i < n; i++) {if(cA == 0 || cB == 0){if(cA == 0 && cB == 0){numA = nums[i];cA++;}else if(cA != 0 && cB == 0){if(numA == nums[i])cA++;else{numB = nums[i];cB++;}}else   //cA == 0 && cB != 0{if(numB == nums[i])cB++;else{numA = nums[i];cA++;}}}else // 都不为零{if(nums[i] == numA)cA++;else if(nums[i] == numB)cB++;else{cB--;cA--;}}}if(cA == 0 && cB == 0)return {};int nA=0, nB=0;for(i = 0; i < n; i++){if(nums[i] == numA)nA++;else if(nums[i] == numB)nB++;}vector<int> ans;if(nA >= n/3+1)ans.push_back(numA);if(nB >= n/3+1)ans.push_back(numB);return ans;}
};

LeetCode 229. 求众数 II(摩尔投票)相关推荐

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

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

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

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

  3. [leetcode]229. 求众数 II

    解题思路:题目要求空间复杂度为O(1) 大于1/3的数不会超过2个,利用Boyer-Moore 投票算法找到数量最多的两个数,再检查下这俩个数的数量有没有超过1/3 class Solution {p ...

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

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

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

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

  6. 229. 求众数 II

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

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

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

  8. leetcode 229. Majority Element II(多数投票算法)

    就是简单的应用多数投票算法(Boyer–Moore majority vote algorithm),参见这道题的题解. class Solution { public:vector<int&g ...

  9. leetcode.169 求众数

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

最新文章

  1. php try catch 作用域,php作用域
  2. 数字滤波器的差分方程和传递函数
  3. android listview countdowntimer,Android-ListView中的CountDownTimer随机闪烁
  4. linux下运行程序后出现段错误的原因和解决案例
  5. 2句搞定 DataGridView 让选中行在可视范围内
  6. 几个 Python“小伎俩” | 内附代码
  7. shell脚本求和_常用的Shell脚本
  8. postman 解决Could not send request
  9. 抖音姓名测试软件,抖音名字大全霸气
  10. 很邪门的事,你知道多少?
  11. 曾国藩【挺经】全文 不错的文章,值得学习!
  12. flex+php ria应用开发实战详解,《Flex+PHP RIA应用开发实战详解-梁文新版》学习日记2...
  13. ES8388说明书CC1110F32RHHR 低功耗 1 GHz 无线芯片
  14. snap相关(个人总结)
  15. 处理器适配器的简单介绍
  16. 一种典型的三极管和MOS管结合的开关控制电路
  17. fiddler抓包工具:生成证书
  18. 全院级pacs系统中前置服务器,智慧医院全院级PACS解决方案
  19. 如何修复崩溃服务器,cm服务器崩溃,修复解决方案
  20. 深圳大学计算机与软件学院哪个校区,2021年深圳大学有几个校区,大一新生在哪个校区...

热门文章

  1. C语言综合期末作业,内蒙古农业大学2010年期末c语言综合作业.doc
  2. mysql 停止服务内存_服务器莫名的内存高占用 导致 MySQL 停止运行问题
  3. stdin,stdout,stderr
  4. 学习过程中的一些细节
  5. Windows-server-2008-R2安装Oracle-11g-R2-dataguard
  6. 【原】webpack--loaders,主要解释为什么需要loaders和注意事项
  7. Windows跟Linux的不同处理
  8. 2018 Multi-University Training Contest 3
  9. java学习笔记IO之字节输入输出流
  10. WinForm邮件内容编辑器的简单实现