python - 合并和排序列表:复杂性
问题描述
我正在编写代码以返回一个列表,该列表是其他两个排序列表的排序合并。该练习要求复杂度为 O(n+m),其中 n 和 m 是要合并的两个列表中的元素。我解决了这个练习,认为复杂性是正确的,但我不确定,我可以请你看一下吗?
def merge1(a,b):
last=-1
saved=[]
while a!=[] and b!=[]:
current_max=max(a[last], b[last])
saved.append(current_max)
if current_max==a[-1]:
a.pop()
else:
b.pop()
直到这里,复杂性肯定是正确的,我不确定以下
if a==[]:
for el in range(len(b)):
saved.append(max(b))
b.pop()
else:
for el in range(len(a)):
saved.append(max(a))
a.pop()
saved.reverse()
return saved
if
我想可以只使用各种方法并避免最后一个循环来降低复杂性for
,但是您能否给我您对我的代码的看法?谢谢各位。
解决方案
推荐阅读
- javascript - 在 Element UI Table-Columns 中对浮点值进行排序
- python - 使用 pyquery 库或 beautifulsoup 解析 HTML 元素。或不同的选择
- angular - Angular 5 循环依赖检测到警告
- ruby-on-rails - 如何解决 ruby on rails,nokogiri/bootsnap 中 gem 的加载错误
- vue.js - 无法获取 v-simple-checkbox 或 v-checkbox 来呈现框本身
- javascript - 如何将参数从 JS 函数传递到 PHP 代码
- javascript - 如何有条件地将道具传递给 React JS 中的组件
- node.js - 使用 Docker 后节点不与 Postgres 数据库通信
- react-native - 如何使用 React-Native 创建自定义构建?
- jestjs - 为什么每次我开玩笑都会弹出这个错误EADDRINUSE?