解题思路:题目要求空间复杂度为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. Android Intent的几种用法全面总结
  2. 学习Kali Linux必须知道的几点
  3. (转)Arcgis for Js之Graphiclayer扩展详解
  4. SpringCloud-容错处理Hystrix熔断器
  5. 面向对象编程03—封装、继承、重写、MRO、多态
  6. android 浏览指定相册,Android -- 采用系统相册浏览指定路径下照片
  7. dup java_java web----TCP/DUP 通信
  8. Filecoin Gas基础费率跌至4.40 nanoFIL
  9. linux如何远程装java_使用Shell远程给Linux安装JDK
  10. java me教程_Java ME基础教程
  11. 非常好用的jdk帮助文档jdk1.8中文谷歌翻译
  12. 基于Flink CDC实现实时数据采集(一)-接口设计
  13. 毕业进行时:人生的二次选择
  14. HTML中如何修改提示文字,html中input提示文字样式修改
  15. java钝化_黑马day14 监听器之javaBean对象的活化和钝化
  16. Scrapy爬虫入门教程十 Feed exports(导出文件)
  17. Linux简介和各发行版介绍
  18. 姜小白的Python日记Day5 字符串与字典
  19. 非线性优化中的KTT条件(知乎文章的理解)
  20. linux-CentOS-rpm、yum、源码安装

热门文章

  1. python自学教程-Python学习教程(一)自学资源分享
  2. python单词的含义-Python常用英文单词有哪些?
  3. python基本代码教程-(Python基础教程之三)Python代码中添加注释
  4. python编程是啥-Python编程
  5. 真正的mybatiesPlus一键生成模板(根据对象增删改查分页的controller完善)详
  6. Vue实现简单图表~满满的干货
  7. ES6 async函数(超级详细、易懂)
  8. Redis--高并发之分布式锁
  9. FFmpeg源代码简单分析:avformat_write_header()
  10. Mplayer 的编译