首页 > 其他 > 详细

摩尔投票法

时间:2020-10-02 22:46:15      阅读:32      评论:0      收藏:0      [点我收藏+]

给定一个大小为 n 的数组,找出其中所有出现超过 ? n/2 ? 次的元素。

示例 1:

输入:nums = [1]
输出:[1]

分析:采用摩尔投票法,两个阶段:抵消阶段和技术阶段

抵消阶段:两个不同投票进行对坑,并且同时抵消掉各一张票,如果两个投票相同,则累加可抵消的次数;

以 [2,2,1,3,1,2,2] 为例
技术分享图片

计数阶段:在抵消阶段最后得到的抵消计数只要不为 0,那这个候选人是有可能超过一半的票数的,为了验证,则需要遍历一次,统计票数,才可确定

时间复杂度为 O(n)

摩尔投票法

原文:https://www.cnblogs.com/chenweibo/p/13762366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!