您如何设计一种有效的算法,使用最少的内存空间并以升序输出不在0到255之间的整数列表,而该列表不在随机生成的100整数列表中? >
幼稚的方法是将0到255之间的每个数字与100个整数列表进行比较。这不是很有效。
解决这个问题的最有效方法是什么?
答案 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。