首页 > 其他分享 >浅谈摩尔投票法

浅谈摩尔投票法

时间:2024-08-30 12:15:02浏览次数:11  
标签:cnt 浅谈 leftarrow 绝对 摩尔 投票 众数 maj 数列

问题引入

给定 \(n\) 个数 \(a_i\),求出该数列的绝对众数,保证该绝对众数存在。

\(n\le 10^7\),空间限制 1MB。

算法介绍

摩尔投票法可以 \(O(1)\) 空间 \(O(n)\) 时间内求出一个数列的绝对众数,使用前提是数列保证存在绝对众数,否则你只能求出一个可能是绝对众数的数,这时你还需要使用其他方法验证该数是否是绝对众数。

核心思想是利用绝对众数出现次数大于其他任何数的出现次数的性质,让两个不同的数抵消,剩下的数一定会是绝对众数。

算法流程:

  • 记录一个当前候选众数 \(maj\) 以及一个出现次数 \(cnt\)。
  • 初始设 \(maj=a_1,cnt=1\)。
  • 从 \(i=2\rightarrow n\),
    • 若 \(cnt=0\),则 \(maj\leftarrow a_i\)
    • 若 \(a_i\not=maj\),则 \(cnt\leftarrow cnt-1\)。
    • 若 \(a_i=maj\),则 \(cnt\leftarrow cnt+1\)。

\(maj\) 即为绝对众数。

标签:cnt,浅谈,leftarrow,绝对,摩尔,投票,众数,maj,数列
From: https://www.cnblogs.com/dcytrl/p/18388510

相关文章

  • 浅谈Java loombook框架
    一、基本介绍        Java的LoomProject是一个处于早期开发阶段的项目,旨在为Java平台添加轻量级的协程支持。协程是一种比线程更加轻量级的存在,它可以在一个线程中并发执行多个任务,从而减少上下文切换的开销,并提高系统的吞吐量。        LoomProject提......
  • java.time包时间类浅谈
    Java早期日期时间API:java.util.Date与java.util.Calendar一、背景在Java的早期版本中,处理日期和时间的需求主要由java.util.Date类和随后加入的java.util.Calendar类来满足。这两个类在Java1.0和Java1.1中分别被引入,为Java程序提供了基本的日期和时间操作能力。然而,随着......
  • 【环境部署系列】浅谈灾难恢复站点:冷/暖/热站点
    原创祺印说信安一般来说,备用站点是指将人员及其工作所需的设备重新安置一段时间,直到恢复或更换正常生产环境为止的站点。包含完全冗余的硬件和软件,具有电信、电话和公用事业连接,以继续所有主要站点的操作。根据维基百科的资料解释,站点通常根据准备程度和投入运行的速度进行......
  • 浅谈二分算法
    浅谈二分算法二分首先知道一下二分是什么。二分,是一种快速处理大型数据的方法。基本逻辑是折半查找。设有一个共有\(n\)个数字的数组,要从中查询某个元素,就可以用二分查找。注:这里的数组默认其成员数值具有单调性。这个点十分重要。还记得小时候(我现在才新初一)跟同学玩过一......
  • 浅谈AI--我们为什么要学会用AI
    为什么要用AI人工成本低、为工作提高效率。了解AIAI入门工具要数ChatGPT,无奈在国内打不开,要用它得通过科学上网或者调用代理商接口。但是今年3月份,百度也发布了免费产品——文心一言,对标ChatGPT3.5。虽然刚开始文心一言给的问答效果不如人意,尤其是答非所问的情况比较多,而且......
  • STC89C52 定时器浅谈
    文章目录1、定时器1.1定时器简介1.2定时器构成1.2.1系统时钟1.2.2计数单元1.2.3中断系统1.2定时器0/1的相关寄存器1.2.1TMOD1.2.2TCON1.3初始化定时器01、定时器1.1定时器简介定时器,又称为计数器,是51单片机的内部资源,即电路的连接和运转都在单片机内部......
  • 浅谈【数据结构】树与二叉树一
    目录1、树与二叉树1.1树的概念2、二叉树2.1二叉树的五大形态2.2二叉树的性质2.3二叉树的存储结构2.4二叉树的遍历谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注没错,说的就是你,不用再怀疑!!!希望我的文章内容能对你有帮助,一起努力吧!!!1、树与二叉树1.1树......
  • 浅谈【数据结构】树与二叉树二
    目录1、二叉排序树1.1二叉树排序树插入1.1.1两种插入方法1.1.2循环法1.1.3递归法1.2二叉树的打印1.3二叉树的结点删除1.4销毁二叉树1.5层次打印谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注没错,说的就是你,不用再怀疑!!!希望我的文章内容能对你有帮助,一......
  • 浅谈二分图
    定义二分图,又称二部图,英文名叫Bipartitegraph。二分图是什么?节点由两个集合组成,且两个集合内部没有边的图。换言之,存在一种方案,将节点划分成满足以上性质的两个集合。性质如果两个集合中的点分别染成黑色和白色,可以发现二分图中的每一条边都一定是连接一个黑色点和一个白......
  • 浅谈一类第 k 大问题
    浅谈一类第k大问题IntroductiontoK-thLargestProblems本文介绍一类第k大问题的处理方法。LuoguP1631序列合并LuoguP2048[NOI2010]超级钢琴LuoguP5283[十二省联考2019]异或粽子CodeForces241BFriends基本思想:先找到部分答案,通过这部分答案更新可能的......