一个论坛有3个发帖很多的ID,发帖数超过了1/4,如何快速地找到他们的ID

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:38:32

思想与一个ID发帖数超过总数的1/2类似,如果每次删除四个不同的ID(不管是否包含发帖数目超过总数1/4的ID),那么,在剩下的ID列表中,原先发帖比例大于1/4的ID所占比例仍然大于1/4。可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到问题的答案。

贴一下别人写的python代码:

#-*-coding:utf-8-*-
02 def find(A):
03 candidate = [-1] * 3
04 nTimes = [0] * 3
05 for i in range(0, len(A)):
06 is_candidate = False
07 for j in range(0, 3):
08 # 第一种情况:A[i]不在候选项中,且有计数器为0的项,则设置A[i]为新的候选项
09 if nTimes[j] == 0 and not A[i] in candidate:
10 is_candidate = True
11 candidate[j] = A[i]
12 nTimes[j] = 1
13 break
14 # 第二种情况:A[i]在候选项中,则把对应计数器加1
15 elif candidate[j] == A[i]:
16 is_candidate = True
17 nTimes[j] += 1
18