我写了一个运行时间为O(n^2)的程序,有没有可能在不使用嵌套的forloops和内置函数的情况下降低代码和复杂度,这是一个匹配的整数问题,输出是[4,5]
a = 12345
b = 49085
l1 = []
l2 = []
l_match = []
while(a != 0):
c = a % 10
l1.append(c)
a //= 10
while(b!= 0):
d = b % 10
l2.append(d)
b //= 10
for i in range(len(l1)):
for j in range(len(l2)):
if l1[i] == l2[j]:
match = l1[i]
l_match.append(match)
print(l_match)
时间复杂度
如果我理解正确,如果我错了就纠正我,目标是找到两个数字之间的共同数字。你知道吗
如果是这样的话,一种更简单的匹配普通整数的方法是通过一个集合从两个数字中得到唯一的数字,然后计算它们之间的交集
输出将是
您可以将每个数字转换为一组数字字符,以便使用集合交集以线性时间复杂度获得两个数字之间的公共数字:
这将返回:
相关问题 更多 >
编程相关推荐