![](/img/trans.png)
[英]Can someone help me figure out how to print the options in this dropdown?
[英]Can someone help me figure out the time complexity of my Algorithm?
假设len(arrayOne) = n
和len(arrayTwo) = m
i = 0 and j = 0
从一开始,您就有一个外部 while 循环,它会运行多长时间并不是很明显。
在 while 循环中,您会做一些持续的工作,然后检查是否j == m
。 这不是真的,所以j
增加了m
次。
现在j == m
,您增加i
并设置j = -1
。 这意味着j
将再次增加m
次。 i
递增, j
重置。
j
将重置n
次。
所以这里的内循环可以用m
表示。 和外循环n
。
因此该算法的运行时间复杂度为 O(n * m)
为什么哦为什么不把这段代码写成:
minDiff = float("inf")
for value1 in arrayOne:
for value2 in arrayTwo:
minDiff = min(minDiff, abs(value1 - value2))
感觉这段代码正在竭尽全力隐藏它是一对嵌套迭代的事实,而且它的时间很明显。
这也意味着它可以在 Python 中写成一行:
minDiff = min(abs(value1 - value2) for value1 in arrayOne for value2 in arrayTwo)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.