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