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,同时count重新赋值1;
第三轮比较: 当前数字1,4和1不相等,则,则count-=1,即count=0,由于count=0,则major被重新赋值为当前比较的数字1,即major=1,同时count重新赋值1;
第四轮

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

被折叠的 条评论
为什么被折叠?



