python - 有人可以帮我弄清楚算法的时间复杂度吗?
问题描述
示例 ArrayOne 输入:[-1, 5, 10, 20, 28, 3]
示例 ArrayTwo 输入:[26, 134, 135, 15, 17]
我的猜测是 O(n^2 + m^2) 其中 n 是 ArrayOne 的长度,m 是 ArrayTwo 的长度?
解决方案
为什么哦,为什么这段代码不写成:
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)
推荐阅读
- javascript - 为什么未选中的复选框的值为“on”?
- python-3.x - 在 Django 中运行后台进程的最佳方法是什么?
- javascript - 如何在框架/框中的同一页面内定向href
- scala - Scala3 宏调用 TypeTree 的类型类实例(无类型 arg)
- c - 后续的 malloc 函数可以覆盖前一个吗?
- javascript - SQL 查询递归异步问题
- javascript - 为什么命名函数不起作用?- 节点.js
- html - Angular Html Css 标头隐藏在组件之一中
- python - 我正在制作一个 mp3 播放器,我需要一个前进按钮,但似乎无法弄清楚
- mysql - sql中的关系相似度计算(也叫协同过滤user-user)