首页 > 解决方案 > 有人可以帮我弄清楚算法的时间复杂度吗?

问题描述

示例 ArrayOne 输入:[-1, 5, 10, 20, 28, 3]

示例 ArrayTwo 输入:[26, 134, 135, 15, 17]

我的猜测是 O(n^2 + m^2) 其中 n 是 ArrayOne 的长度,m 是 ArrayTwo 的长度?

在此处输入图像描述

标签: pythonalgorithmwhile-looptime-complexity

解决方案


为什么哦,为什么这段代码不写成:

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)

推荐阅读