多数投票算法(Boyer-Moore Algorithm)
一、问题来源 : LeetCode169. Majority Elements
二、解决问题 :寻找数组中的众数
三、算法介绍
1、传统方法:
包括但不仅限于暴力法(双重循环逐个数字判断是否为众数)、HashMap法(计数)、排序法(中位数一定为众数,因为即便从距离中点最远的两端起,众数依旧能够到达中位数的位置)、随机数法(随机找数组中一个数判断是否为众数)、分治法
2、多数投票算法(Boyer-Moore Algorithm)
【1】Java版
public int majorityElement(int[] nums) {int count = 0;Integer candidate = null;for (int num : nums) {if (count == 0) {candidate = num;}count += (num == candidate) ? 1 : -1;}return candidate;}
【2】Python版
def majorityElement(self, nums):count = 0candidate = Nonefor num in nums:if count == 0:candidate = numcount += (1 if num == candidate else -1)return candidate
值得注意的是,当仅当众数确定存在时,得到的candidate才有意义,例如000111和111000,按照本方法得到的candidate分别是0和1。
那为什么能够生效呢,假设从非众数i开头,因为众数的数量高于其他所有数字的总和,我们不妨取最极端的例子,即只有两个数字的例子来看(忽略了非众数内部的冲突)1 0 0 1 1 0 0
可以看出,数字1将会在序号2时被替换,只需要消耗相同数量的众数来抵消非众数即可,所以在最后一位的时候,非众数一定被完全抵消。
四、参考来源
1、Title:多数投票算法(Boyer-Moore Algorithm)详解 Website:https://www.cnblogs.com/andy-0212/p/10420876.html
2、Title:169. Majority Element官方题解 Website:https://leetcode-cn.com/problems/majority-element/solution/qiu-zhong-shu-by-leetcode-2/
多数投票算法(Boyer-Moore Algorithm)相关推荐
- 摩尔投票法(Boyer–Moore majority vote algorithm)
参考资料 论文MJRTY A Fast Majority Vote Algorithm 算法演示网站 维基百科 算法解读 概述 摩尔投票法(Boyer–Moore majority vote algo ...
- 多数投票算法 Majority Vote Algorithm
题目 Given an integer array of size n, find all elements that appear more than ? n/3 ? times. The alg ...
- Boyer-Moore 投票算法小析
今日get到摩尔投票算法,时间和空间复杂度都得到了最优的结果,觉得非常经典,在此记录,以备今后查阅,同时希望对和我一样的初学者起到抛砖引玉的效果. CiterSeerX上论文链接: https://c ...
- Boyer–Moore majority vote algorithm(摩尔投票算法)
Boyer–Moore majority vote algorithm 摩尔投票算法 Leetcode15: https://leetcode.com/problems/majority-elemen ...
- 【KMP】572: Boyer–Moore–Horspool algorithm
题目: http://acm.swust.edu.cn/#/problem/572/490 题目描述 题目内容来自:https://en.wikipedia.org/w/index.php?title ...
- C语言实现boyer moore(博伊尔-摩尔搜索)算法(附完整源码)
boyer moore博伊尔-摩尔搜索算法 实现以以下相关接口 boyer moore博伊尔-摩尔搜索算法的完整源码(定义,实现,main函数测试) 实现以以下相关接口 int max(int a, ...
- leetcode 229. Majority Element II(多数投票算法)
就是简单的应用多数投票算法(Boyer–Moore majority vote algorithm),参见这道题的题解. class Solution { public:vector<int&g ...
- java 投票算法_摩尔投票算法 - woshixin的个人空间 - OSCHINA - 中文开源技术交流社区...
摩尔投票算法(Moore majority vote algorithm) 这个在wiki的介绍在https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_m ...
- matlab 投票法_张量投票算法及其使用并分析.pdf
张量投票算法及其使用并分析 摘 要 本文主要介绍了一种新的数据分析算法,即张量投票算法.该算法完全利用图像 数据,根据张量分析,矩阵论和几何的知识,对数据点进行编译和几何阐释,再根据心 理学中的Ges ...
- Boyer–Moore BM 后缀匹配算法
前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...
最新文章
- html浏览位置坐标,HTML5教程 | HTML5地理定位(GeoLocation API)
- VS2010 COM组件问题
- 搞 Java 的年薪 50w 什么水平?
- inode客户端连接成功上不了网_wifi连接上但上不了网怎么回事
- [转]Silverlight在调用wcf时传输数据过大返回Not Found的解决办法
- linux screen -ls,Linux screen命令详解
- Linux课题实践一
- 用python写一个文件管理程序下载_Python管理文件神器 os.walk
- Qt官网变更【2012】
- SEO学习步骤--SEO入门第一章
- Linux和Docker常用命令
- OFFICE技术讲座:标点压缩是各大OFFICE软件差异关键,总体考量有哪些
- FTP探测-挖掘鸡2014免费版
- δ星 丨 读书笔记 notes-凭什么《只放一只羊》:干掉沃尔玛10个亿并将其逼出德国的“平民超市”品牌阿尔迪...
- 关闭windows电脑 ctrl +alt +方向键旋转屏幕快捷键
- SCI-HUB最新文献网址
- 名帖292 张瑞图 行书《论书卷》
- 关于ORACLE PLSQL读文件
- 智能家居创意产品一智能插座
- ORA-00937: 不是单组分组函数
热门文章
- 443端口被攻击怎么办
- poj-1069(三角形和六边形)(转)
- tbc新服务器没消息,魔兽世界怀旧服,官方再流出TBC消息,舅舅党再次爆料燃烧的远征...
- meri oracle view_Oracle Siebel CRM
- 测试用例设计方法——等价类划分法、边界值分析法、场景法、判定表、因果图、错误推测法和正交试验法
- html5银行理财项目实践作业,金融理财产品实践报告.doc
- 如何用计算机求一个正数的算术平方根,《用计算器求一个正数的算术平方根》教学设计...
- Atitit 代理解决方案proxy solu attilax总结 1. 为什么需要代理	1 1.1. Ajax跨域	1 1.2. Nginx反向代理	1 2. 分类	2 2.1. 普通vs隧道	2
- SpringSecurity登陆受权出现This object has not been built问题解决
- 【已解决】瞎设置代理服务器后IE浏览器上不了网