【发布时间】:2016-03-26 02:27:52
【问题描述】:
我有一个清单:
> S = [1,8,93,3,8]
我需要选择一个不在列表中但在最大值范围内的随机数。我更关心时间复杂度 O(n)。 S 可能是一个相当大的列表。
import random
S=[1,8,93,3,8]
m = max(S)
for x in xrange(m):
rand = random.randint(1,m)
if rand not in S:
print rand
else:
print "Number - %d found in the array" % rand
break
我没有尝试列表理解
【问题讨论】:
-
m + 1有什么问题? -
或者,如果它是整数的
list,并且随机数不必是整数,0.5可以工作。 -
你是对的。我需要为数字范围添加 m+1
-
可能是因为你花了 20 分钟才真正说出你要找的东西。
-
@Paddy 你感到惊讶吗?一个不清楚的问题是一个糟糕的问题,就这么简单。