求助
摩根投票,只不过要选两个变量。我的问题在于for循环里后两个我不理解。前两个if循环的意思是遍历数组里的数,如果是就让count加下去。但后边两个if啥意思呢。而且还有count-1那里是不是丢了else啊。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 的数量 是不是 多于 3 分之一
再数一数 major2 的数量 是不是 多于 3 分之一
liuzhengyuan 发表于 2022-7-29 22:02
就是数一数 major1 的数量 是不是 多于 3 分之一
再数一数 major2 的数量 是不是 多于 3 分之一
不是的老哥,我问的是这一段
if count1 == 0:
major1 = each
count1 = 1
continue
if count2 == 0:
major2 = each
count2 = 1
continue
count1 -= 1
count2 -= 1 zhongning123 发表于 2022-7-30 14:41
不是的老哥,我问的是这一段
if count1 == 0:
major1 = each
{:10_245:}不好意思
for 循环中的 4 个 if 就是所谓的“对抗阶段吗”
我们就不断的选出有可能成为绝对众数的 “候选人”
先从 num 开始
major 1 和 major 2 不断对抗
出现 major 1,count 1 加一
出现 major 2,count 2 加一
if count == 0 的意思就是说在 each 不等于都两个 major 的前提下,打败一个从没出现过的“废物”major,取代其位置
再之后就是在两个 major 都有是满位的时候,就没有所谓可以打败的“废物” major 了
开始执行 最后两行代码,意思就是一个新的元素出现时肯定降低了其他两个major的地位。但是我们没有第 3 个可以存放数据的major了,所以就相对的让两个 count 减一,让其他所有元素不断消耗其他两个major的 count。直到其中一个被打败变成 0,再有一个新的 major 来代替
页:
[1]