一、问题来源 : 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)相关推荐

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

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

  2. 多数投票算法 Majority Vote Algorithm

    题目 Given an integer array of size n, find all elements that appear more  than ? n/3 ? times. The alg ...

  3. Boyer-Moore 投票算法小析

    今日get到摩尔投票算法,时间和空间复杂度都得到了最优的结果,觉得非常经典,在此记录,以备今后查阅,同时希望对和我一样的初学者起到抛砖引玉的效果. CiterSeerX上论文链接: https://c ...

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

    Boyer–Moore majority vote algorithm 摩尔投票算法 Leetcode15: https://leetcode.com/problems/majority-elemen ...

  5. 【KMP】572: Boyer–Moore–Horspool algorithm

    题目: http://acm.swust.edu.cn/#/problem/572/490 题目描述 题目内容来自:https://en.wikipedia.org/w/index.php?title ...

  6. C语言实现boyer moore(博伊尔-摩尔搜索)算法(附完整源码)

    boyer moore博伊尔-摩尔搜索算法 实现以以下相关接口 boyer moore博伊尔-摩尔搜索算法的完整源码(定义,实现,main函数测试) 实现以以下相关接口 int max(int a, ...

  7. leetcode 229. Majority Element II(多数投票算法)

    就是简单的应用多数投票算法(Boyer–Moore majority vote algorithm),参见这道题的题解. class Solution { public:vector<int&g ...

  8. java 投票算法_摩尔投票算法 - woshixin的个人空间 - OSCHINA - 中文开源技术交流社区...

    摩尔投票算法(Moore majority vote algorithm) 这个在wiki的介绍在https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_m ...

  9. matlab 投票法_张量投票算法及其使用并分析.pdf

    张量投票算法及其使用并分析 摘 要 本文主要介绍了一种新的数据分析算法,即张量投票算法.该算法完全利用图像 数据,根据张量分析,矩阵论和几何的知识,对数据点进行编译和几何阐释,再根据心 理学中的Ges ...

  10. Boyer–Moore BM 后缀匹配算法

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

最新文章

  1. html浏览位置坐标,HTML5教程 | HTML5地理定位(GeoLocation API)
  2. VS2010 COM组件问题
  3. 搞 Java 的年薪 50w 什么水平?
  4. inode客户端连接成功上不了网_wifi连接上但上不了网怎么回事
  5. [转]Silverlight在调用wcf时传输数据过大返回Not Found的解决办法
  6. linux screen -ls,Linux screen命令详解
  7. Linux课题实践一
  8. 用python写一个文件管理程序下载_Python管理文件神器 os.walk
  9. Qt官网变更【2012】
  10. SEO学习步骤--SEO入门第一章
  11. Linux和Docker常用命令
  12. OFFICE技术讲座:标点压缩是各大OFFICE软件差异关键,总体考量有哪些
  13. FTP探测-挖掘鸡2014免费版
  14. δ星 丨 读书笔记 notes-凭什么《只放一只羊》:干掉沃尔玛10个亿并将其逼出德国的“平民超市”品牌阿尔迪...
  15. 关闭windows电脑 ctrl +alt +方向键旋转屏幕快捷键
  16. SCI-HUB最新文献网址
  17. 名帖292 张瑞图 行书《论书卷》
  18. 关于ORACLE PLSQL读文件
  19. 智能家居创意产品一智能插座
  20. ORA-00937: 不是单组分组函数

热门文章

  1. 443端口被攻击怎么办
  2. poj-1069(三角形和六边形)(转)
  3. tbc新服务器没消息,魔兽世界怀旧服,官方再流出TBC消息,舅舅党再次爆料燃烧的远征...
  4. meri oracle view_Oracle Siebel CRM
  5. 测试用例设计方法——等价类划分法、边界值分析法、场景法、判定表、因果图、错误推测法和正交试验法
  6. html5银行理财项目实践作业,金融理财产品实践报告.doc
  7. 如何用计算机求一个正数的算术平方根,《用计算器求一个正数的算术平方根》教学设计...
  8. Atitit 代理解决方案proxy solu attilax总结 1. 为什么需要代理 1 1.1. Ajax跨域 1 1.2. Nginx反向代理 1 2. 分类 2 2.1. 普通vs隧道 2
  9. SpringSecurity登陆受权出现This object has not been built问题解决
  10. 【已解决】瞎设置代理服务器后IE浏览器上不了网