【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)
文章目录
- 题目描述
- 思路 & 代码
- 思路一:哈希表
- 思路二: 摩尔投票法
题目描述
- 好家伙,这是今天最有意思的题目了
思路 & 代码
思路一:哈希表
- 先说缺点:空间复杂度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、摩尔投票法、哈希表)相关推荐
- LeetCode 169. 求众数(摩尔投票)
文章目录 1. 题目信息 2. 解题思路 3. 代码 3.1 排序 3.2 map计数 3.3 摩尔投票 1. 题目信息 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ ...
- [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]
[问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...
- LeetCode 229. 求众数 II(摩尔投票)
1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...
- C语言刷题之摩尔投票法
目录 1.引入 2.摩尔投票算法 3.基本步骤 摩尔投票法分为两个阶段: 1.抵消阶段 2.检验阶段 4.代码实现 5.扩展沿伸 6.总结 1.引入 我们来看一个问题: 假设有一个无序数组长度为n,要 ...
- 动态规划和摩尔投票法
动态规划 维基百科对动态规划(Dynamic programming,简称DP)的定义是一种在数学.管理科学.计算机科学.经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问 ...
- 摩尔投票法(Boyer–Moore majority vote algorithm)
参考资料 论文MJRTY A Fast Majority Vote Algorithm 算法演示网站 维基百科 算法解读 概述 摩尔投票法(Boyer–Moore majority vote algo ...
- 小小算法,可笑可笑——摩尔投票法(集万家之长)
摩尔投票法 不多说,先上题目. 问题描述:leetcode 229题 给定一个大小为 n 的整数数组,找出其中的所有的出现超过 ⌊ n/3 ⌋ 次的元素. 这还不简单!直接暴力计数,上map,easy ...
- 摩尔投票法(力扣- -229. 求众数 II)
摩尔投票法(力扣- -229. 求众数 II) 文章目录 摩尔投票法(力扣- -229. 求众数 II) 一.题目描述 二.分析 摩尔投票法 总结 三.代码 一.题目描述 二.分析 这道题如果用O(N ...
- 2020年 Moore majority vote algorithm 摩尔投票法知多少
第一眼看到这个题目,想到的是使用Map来统计出现频次,然后遍历找出频次大于n/2的元素. class Solution {public int majorityElement(int[] nums) ...
最新文章
- 政府要尽快对应用商店出台管理办法
- k-means算法的理解与实现
- 实现Qt日志功能并输出到文件
- springboot创建parent_Spring Boot 开篇:快速入门
- 随时更新———个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客
- 用Spring长轮询Tomcat
- Java版二叉树遍历,查找,顺序化存储代码实现
- 农行软开是总行编制吗_2021农行总行校招笔试来啦,你知道农行笔试都考些什么吗?...
- php6 配置,thinkphp6如何配置环境变量
- Node 连接mysql数据库
- maven的基础入门
- 如何正确上传一张图片?
- python机器学习库sklearn——特征选择
- Mac 下开启系统自带webserver
- 三阶魔方还原 - 只需7步6个公式
- 计算机大神专业小说,大神作品排行榜:网络小说大神级作者前50名
- 2009福布斯中国上市公司最佳CEO榜
- 视频教程-QQ机器人--基于酷Q开发7精讲-C/C++
- 肾囊肿有什么症状呢?
- c语言中字母与allse,几读音是什么
热门文章
- php改密后joomla无法登陆,php – Joomla 3.3禁用“重置密码”功能
- c++卸载工具_win7系统如何卸载office2007兼容包
- r3 4300u r5 u_R5刀粒
- Socket编程应用——开发聊天软件
- 单片机实验-DA实验
- 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
- find()matlab,Matlab 之 find()函数
- python matplotlib 散点图_python matplotlib散点图颜色
- omv检查硬盘坏道_坏道检测与修复
- 讲讲我对比特币和区块链的认知,挖矿不难,挖到难