文章目录

  • 题目描述
  • 思路 & 代码
    • 思路一:哈希表
    • 思路二: 摩尔投票法

题目描述

  • 好家伙,这是今天最有意思的题目了

思路 & 代码

思路一:哈希表

  • 先说缺点:空间复杂度O(n)
  • 一次遍历,记录<数组存储值,出现次数>,即可。
  • 然后遍历哈希表,找到出现次数大于 n/2 的数即可。
  • (代码就不贴了,这方法不是重点)

思路二: 摩尔投票法

  • 绝赞思路!
  • 先考虑一个问题:多国混战,不同国家的士兵会 1v1,然后双双战死。那么一个国家在什么条件下会一定胜利?
  • 答案是兵力 > 其他所有国家士兵总数
  • 最好情况下:其他士兵国家全在互殴,那么这个国家只需要对战最后剩下来的一个国家的兵力即可。
  • 最坏情况下:所有国家的士兵都刚好和这个国家对上,由于兵力 > 其他所有国家士兵总数,因此最后还是会剩下至少一个士兵,也能取得胜利。也就是最好最坏都能“胜利”
  • 显而易见,胜利国就是本题的多数元素
class Solution {public int majorityElement(int[] nums) {// 摩尔投票法:ans为当前元素,count为当前元素”兵力“// 相同,则兵力增加;不同,则兵力减少;兵力为0,则下一轮进行当前元素更新。int count = 1, ans = nums[0];for(int i=1;i<nums.length;i++){if(count == 0){ans = nums[i];// 然后用下一个判断加一次即可}if(nums[i] == ans){count++;}else{count--;}}return ans;}
}
  • 无注释版
class Solution {public int majorityElement(int[] nums) {int ans = 0;int count = 0;for(int i = 0; i < nums.length; i++) {if(count == 0) {ans = nums[i];}if(nums[i] == ans) {count++;}else {count--;}}return ans;}
}

【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)相关推荐

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

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

  2. [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]

    [问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...

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

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

  4. C语言刷题之摩尔投票法

    目录 1.引入 2.摩尔投票算法 3.基本步骤 摩尔投票法分为两个阶段: 1.抵消阶段 2.检验阶段 4.代码实现 5.扩展沿伸 6.总结 1.引入 我们来看一个问题: 假设有一个无序数组长度为n,要 ...

  5. 动态规划和摩尔投票法

    动态规划 维基百科对动态规划(Dynamic programming,简称DP)的定义是一种在数学.管理科学.计算机科学.经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问 ...

  6. 摩尔投票法(Boyer–Moore majority vote algorithm)

    参考资料 论文MJRTY A Fast Majority Vote Algorithm 算法演示网站 维基百科 算法解读 概述 摩尔投票法(Boyer–Moore majority vote algo ...

  7. 小小算法,可笑可笑——摩尔投票法(集万家之长)

    摩尔投票法 不多说,先上题目. 问题描述:leetcode 229题 给定一个大小为 n 的整数数组,找出其中的所有的出现超过 ⌊ n/3 ⌋ 次的元素. 这还不简单!直接暴力计数,上map,easy ...

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

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

  9. 2020年 Moore majority vote algorithm 摩尔投票法知多少

    第一眼看到这个题目,想到的是使用Map来统计出现频次,然后遍历找出频次大于n/2的元素. class Solution {public int majorityElement(int[] nums) ...

最新文章

  1. 政府要尽快对应用商店出台管理办法
  2. k-means算法的理解与实现
  3. 实现Qt日志功能并输出到文件
  4. springboot创建parent_Spring Boot 开篇:快速入门
  5. 随时更新———个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客
  6. 用Spring长轮询Tomcat
  7. Java版二叉树遍历,查找,顺序化存储代码实现
  8. 农行软开是总行编制吗_2021农行总行校招笔试来啦,你知道农行笔试都考些什么吗?...
  9. php6 配置,thinkphp6如何配置环境变量
  10. Node 连接mysql数据库
  11. maven的基础入门
  12. 如何正确上传一张图片?
  13. python机器学习库sklearn——特征选择
  14. Mac 下开启系统自带webserver
  15. 三阶魔方还原 - 只需7步6个公式
  16. 计算机大神专业小说,大神作品排行榜:网络小说大神级作者前50名
  17. 2009福布斯中国上市公司最佳CEO榜
  18. 视频教程-QQ机器人--基于酷Q开发7精讲-C/C++
  19. 肾囊肿有什么症状呢?
  20. c语言中字母与allse,几读音是什么

热门文章

  1. php改密后joomla无法登陆,php – Joomla 3.3禁用“重置密码”功能
  2. c++卸载工具_win7系统如何卸载office2007兼容包
  3. r3 4300u r5 u_R5刀粒
  4. Socket编程应用——开发聊天软件
  5. 单片机实验-DA实验
  6. 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
  7. find()matlab,Matlab 之 find()函数
  8. python matplotlib 散点图_python matplotlib散点图颜色
  9. omv检查硬盘坏道_坏道检测与修复
  10. 讲讲我对比特币和区块链的认知,挖矿不难,挖到难