|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
nums = [1, 1, 2, 1, 3, 2, 3, 2]
major1 = major2 = nums[0]
count1 = count2 = 0
# 对抗阶段
for each in nums:
if major1 == each:
count1 += 1
continue
if major2 == each:
count2 += 1
continue
if count1 == 0:
major1 = each
count1 = 1
continue
if count2 == 0:
major2 = each
count2 = 1
continue
count1 -= 1
count2 -= 1
这段代码使用了摩尔投票算法,通过对抗阶段找出出现次数最多的两个数字。major1和major2分别表示出现次数最多的两个数字,count1和count2分别表示major1和major2的出现次数。在对抗阶段,如果当前数字与major1相同,则count1加1;如果当前数字与major2相同,则count2加1。如果count1或count2为0,则将当前数字赋值给major1或major2。如果count1和count2都不为0,且当前数字与major1和major2都不相同,则将count1和count2分别减1。这样,major1和major2就能表示出现次数最多的两个不同的数字。
|
|