计算具有后继元素的元素数量的最佳方法

时间:2018-12-31 21:38:13

标签: python arrays list

给出n个(无序且可能重复的)元素的列表,我想计算元素i的数量,以使它们的后继者i + 1也在列表中。

这是一个朋友给我的问题,我找不到元素值高达1,000,000,000的大n(100,000)的最佳解决方案。下面是我目前使用随机生成的列表的方法,该方法需要很长时间才能工作。

import random
temp = random.sample(range(1000000000),random.randint(2,100000))
total_sum = 0
for i in range(len(temp)):
    if (temp[i]+1) in temp:
        total_sum+=1
print(total_sum)

1 个答案:

答案 0 :(得分:2)

使用set

import random
random.seed(42)

temp = random.sample(range(1000000000), random.randint(2, 100000))

s = set(temp)
total_sum = sum(e + 1 in s for e in temp)
print(total_sum)

输出

7

集合中的查找时间为 O(1),而列表为 O(n)。使用集合的方法是 O(n),您当前的实现是 O(n ^ 2)