linked-list - 在单循环有序列表中插入 M 个元素的时间复杂度是多少?
问题描述
On a singly circular ordered list having N elements and
if M elements are to be inserted what will be the complexity of time?
a) O(M*N)
b) O(M*(M+N))
c) O((M+N) * log(M+N))
我认为,完成这项工作所花费的时间应该是O(N + M)
. 因为我们需要O(N)
找到最后一个元素并O(M)
在其后插入所有元素,链接将采用O(1)
.
另外,我觉得这个词Ordered
有点令人困惑,是它Sorted
还是Preserving Natural Ordering
.
如果Ordered
意味着Preserving Natural Ordering
那么我认为O(N + M)
。
如果Sorted
那时O(N * M)
解决方案
这看起来像是一个排序的情况,而不是“保留自然排序”,我们将计算插入的完整操作(所有 m 个元素)的频率,因此如果我们假设值为N 比 M 高得多
推荐阅读
- python - 计算字典列表中特定字典值的出现次数并使用该计数创建一个新字典
- haskell - 类型与功能不匹配
- angular - 如何将默认值应用于 IgxSelectComponent
- java - 条件继承:按子字段加入和搜索
- .htaccess - HTACCESS 不会在 localhost xampp 上显示 webp 图像
- python - 如何从python中的数组中删除引号
- javascript - 用于纯 Javascript 文件的 Vscode Eslint
- javascript - 为什么在使用 redux 时,这两种情况下的 react 渲染会不同?
- php - 显示已选中复选框的选中图标(刻度)。| 拉拉维尔 | (复选框,如在 WordPress 中)
- python - Azure 功能无法纵向扩展