import random
import string
def get_id():
return ''.join(random.choice(string.digits) for n in range(4))
driver_id = [1, 2, 3, 4]
unique_id=[]
while len(unique_id)!=len(driver_id):
id = get_id()
if id not in unique_id:
unique_id.append(id)
print(unique_id)
假设4位数字用作^{,大多数答案都是关于如何生成它们的。
让我们来研究这个问题,提出设计、约束和管理它们
如果您使用数字作为数字,而不是字符串,则以非零开头的非零数字是, 1000到9999,您只能处理8999个元素(您的案例中的驱动程序)-约束
例子:如果你认为作为< EM >数字< EEM >实际上是3位数字,p>
设计:
使用
range(1000,10000)
在for循环中生成数字并将其保存在列表中(代码如下): 复杂性:是常数O(c),只发生一次当您遇到一个元素时,查找该键是否存在,并将其添加到驱动程序id映射中
将其添加到列表(ID池)中的map和pop元素中。不要使用移除,使用pop,pop始终为O(1)。 注意:在本例中,remove也是O(1),因为它是排序的,并且您正在从左侧逐个移除。但是用流行音乐来保证
若要查找驱动程序是否已在列表中,也可以将上面的映射反转
地图的查找是O(1)
如果循环遍历所有驱动程序并分配它,则复杂性为O(N)
注意: 如果您使用数字作为字符串,并且考虑以零开始的非零数字,则为1108个数字。您将获得额外的~1000个可解决的驱动程序
这些数字也会进入四位数池。复杂性不会有太大变化
以0-999开头的数字,例如:0123
以00-99开头的数字,例如:0023
以000-9开头的数字,例如:0003
以0000-1开头的数字,例如:0000(唯一一个)
输出:
您可以像这样使用字符串对象的zfill函数
并将导致:
相关问题 更多 >
编程相关推荐