摩尔投票法

摩尔投票法用于找出一组数字序列中出现次数大于总数1/2的数字。每次从序列中选择两个不同的数字删除,最后剩下的数字或相同数字集合即为所求。在示例中,通过模拟比较过程,展示了如何使用摩尔投票法找到数组nums=[3,1,4,1,1,1,6]的出现次数最多的数字1。" 54890985,1340888,机器学习笔记:多分类策略与类别不平衡处理,"['机器学习', '数据挖掘', '决策树算法', '分类', '样本均衡']
摘要由CSDN通过智能技术生成

1概念理解

  1.1理解

        找出一组数字序列中出现次数大于总数1/2的数字(并且假设这个数字一定存在),显然这个数字只可能有一个。

       摩尔投票算法是基于:每次从序列里选择两个不相同的数字删除掉(或称为“抵消”),最后剩下一个数字或几个相同的数字,就是出现次数大于总数一半的那个。

1.2使用前提

      胜利者的选票必须大于总人数的1/2,即某个数字出现的次数必须比总人数的一半还要多

2思路分析

        假设有一个数组nums=[3,1,4,1,1,1,6],利用摩尔投票法,得到最终的胜利者(出现次数最多的数字)。利用摩尔投票法,即两两相护抵消,分析如下:

       用major 来存储出现次数最多的数,count来存储major抵消后剩余的次数。


  设置初值:major=3,count =1;

     第一轮比较:当前数字1,3和1不相等,则count-=1,即count=0,由于count=0,则major被重新赋值为当前比较的数字1,即major=1,同时count重新赋值1;

     第二轮比较:当前数字4,1和4不相等,则count-=1,即count=0,由于count=0,则major被重新赋值为当前比较的数字4,即major=4,同时coun

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值