列出列表中尚未列出的号码

时间:2018-11-08 17:07:48

标签: algorithm

您如何设计一种有效的算法,使用最少的内存空间并以升序输出不在0到255之间的整数列表,而该列表不在随机生成的100整数列表中? >

幼稚的方法是将0到255之间的每个数字与100个整数列表进行比较。这不是很有效。

解决这个问题的最有效方法是什么?

1 个答案:

答案 0 :(得分:0)

算法为: 1)对100个整数的随机列表进行排序。拆分列表,以便所有元素都应在(0,255)范围内

2)遍历整个随机列表,选择每个随机列表成员之间的值:

我在python中的示例代码是:

import random
random_list=[]
for x in range(100):
    random_list.append(random.randint(1,255))
random_list.sort()

output_list = []
for insert_number in range(0,random_list[0]):
    output_list.append(insert_number)
for i in range(len(random_list)-1):
    for insert_number in range(random_list[i]+1,random_list[i+1]):
        output_list.append(insert_number)
for insert_number in range(random_list[-1]+1,255):
    output_list.append(insert_number)
print(output_list)

时间复杂度应为O(n ^ 2),其中n是随机列表的长度,即100。