文章目录

  • 1. 题目信息
  • 2. 解题思路
  • 3. 代码
    • 3.1 排序
    • 3.2 map计数
    • 3.3 摩尔投票

1. 题目信息

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在众数。

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

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

2. 解题思路

  • 根据题意肯定存在,先排序,然后返回n/2下标处的值,时间复杂度O(n2)
  • 哈希map,查找key,value计数,时间复杂度O(n)
  • 摩尔投票法,时间复杂度O(n)

相关题目:LeetCode 229. 求众数 II(摩尔投票)

3. 代码

3.1 排序

class Solution
{public:int majorityElement(vector<int>& nums){sort(nums.begin(),nums.end());return nums[nums.size()/2];}
};

3.2 map计数

class Solution
{public:int majorityElement(vector<int>& nums){unordered_map<int, int> m;for(int i = 0; i < nums.size(); ++i){m[nums[i]]++;if(m[nums[i]] > nums.size()/2)return nums[i];}return 0;}
};

3.3 摩尔投票

class Solution {//摩尔投票
public:int majorityElement(vector<int>& nums) {int i, maj, count = 0, n = 0;for(i = 0; i < nums.size(); ++i){if(count == 0){maj = nums[i];count++;}else{if(maj == nums[i])count++;elsecount--;}}for(i = 0; i < nums.size(); ++i){if(maj == nums[i])n++;}if(n > nums.size()/2)return maj;return -1;}
};

《剑指Offer》同题:面试题39. 数组中出现次数超过一半的数字

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

  1. leetcode.169 求众数

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

  2. Leetcode:169. 求众数

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

  3. Leetcode 169. 求众数 解题思路及C++实现

    解题思路: 因为int型数值只有32位,使用位运算的方法来解这道题时,就是要确定这个众数,在32位的位置上分别是0还是1. 由题意,因为众数的个数超过n/2,所以遍历数组nums后,如果某一位置上1的 ...

  4. LeetCode 169.求众数

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

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

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

  6. splay + 线段树 ---- P3765总统选举 [带修改的动态区间众数 摩尔投票+n棵splay]

    题目链接 题目大意: 解题思路: 1.摩尔投票法: 题意是找n个数内出现次数大于n/2的数 保证存在这个数用的方法叫做摩尔投票法 首先我们注意到这样一个现象: 在任何数组中,出现次数大于该数组长度一半 ...

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

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

  8. [leetcode]229. 求众数 II

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

  9. 领扣问题169. 求众数 python解决方案

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

最新文章

  1. 别让低效努力,毁了你
  2. mysql Communications link failure druid
  3. 利用ABAP调试模式修改SE16里数据库表的内容
  4. 路由器和网关的区别?
  5. 详解NLP技术中的:预训练模型、图神经网络、模型压缩、知识图谱
  6. 红外解码软件 android,一文教会你红外线遥控器软件解码程序
  7. js 多个input值拼接json字符串
  8. php 保存错误日志,PHP中把错误日志保存在系统日志中_PHP教程
  9. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (4) Pitch Parameters Encode 模块
  10. 《QML 基础教程》
  11. 联想SR158 安装CentOS7系统
  12. 安兔兔html5测试跑分榜,2021年最新安兔兔手机性能跑分排行榜
  13. 1741. Communication Fiend(dp)
  14. 域控服务器里没有internet时间,加入域之后,【Internet 时间】选项没有了
  15. 阿里云ACP认证之云服务器ECS知识整理(考题占比 31%)
  16. 使用java在后台将数据导出为excel文件
  17. 联邦学习综述(二)——联邦学习的分类、框架及未来研究方向
  18. 石墨烯/PEDOT 水凝胶
  19. Netty私有协议栈 读书笔记
  20. 2019年手机会出现什么?四镜头、屏幕挖孔、折迭手机

热门文章

  1. python查询斐波那契数列通项公式_分享一个神奇的操作系统——斐波那契+MACD,每一波都有20%以上的收益!...
  2. abap开发注释快捷键_让ABAP开发者更加轻松的若干快捷键
  3. Redis分布式锁解决抢购问题
  4. Apache 配置:是否显示文件列表
  5. JavaScript权威指南(第5版)pdf
  6. 缓存优化过程中的一些思考
  7. CentOS 6.8 虚拟机安装详解
  8. Linux之定时任务补充
  9. java----IO和NIO的区别
  10. 大学英语四六各项分值