bianfushuju 发表于 2023-9-19 22:27:54

为什么major1和major2能表示两个不同的数

nums =
   
major1 = major2 = nums
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

isdkz 发表于 2023-9-19 22:28:01

这段代码使用了摩尔投票算法,通过对抗阶段找出出现次数最多的两个数字。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就能表示出现次数最多的两个不同的数字。
页: [1]
查看完整版本: 为什么major1和major2能表示两个不同的数