Ari小虎鱼 发表于 2022-4-15 16:14:07

摩尔计数法

第022讲摩尔计数法plus
标答长这样: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
   
# 统计阶段
if nums.count(major1) > len(nums) / 3:
    print(major1)
if nums.count(major2) > len(nums) / 3:
    print(major2)

所以major1和major2从始至终运行一样的步骤,为什么最后会得出两个结果?

tiangtian 发表于 2022-4-15 18:37:30

遍历时 if 每次只运行一次就继续下次循环,结果怎么会一样

Ari小虎鱼 发表于 2022-4-16 07:10:42

tiangtian 发表于 2022-4-15 18:37
遍历时 if 每次只运行一次就继续下次循环,结果怎么会一样

就是continue发挥的作用?
还有一个不明白的地方就是18行为什么要让count1=1
页: [1]
查看完整版本: 摩尔计数法