algorithm - 从列表中删除项目 - 算法时间复杂度

标签 algorithm big-o

问题由两个排序列表组成,没有重复项,大小为 n 和 m。第一个列表包含应从第二个列表中删除的字符串。

最简单的算法必须执行 nxm 操作(我相信这个术语是“二次时间”?)。

改进的解决方案是利用两个列表都已排序的事实,并在以后的比较中跳过索引低于上次删除索引的字符串。 我想知道那是什么时间复杂度?

这个问题有没有时间复杂度更好的解决方案?

最佳答案

你应该看看Merge sort .这就是它高效工作背后的基本思想。

想法是同时扫描两个列表,这需要 O(n+m)时间:

制作指针x对于第一个列表,说 A和另一个指针 y对于第二个列表,说 B .设置x=0y=0 .同时 x < ny < m , 如果 A[x] < B[y] , 然后添加 A[x]到新的合并列表并递增 x .否则添加 B[y]到新列表并增加 y .一旦你点击 x=ny=m , 接受 B 中的剩余元素或 A , 分别。

关于algorithm - 从列表中删除项目 - 算法时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234078/

相关文章:

algorithm - 询问一些伪代码解释

python - 如何将一组重叠范围划分为非重叠范围?

c - 在 O(logn) 时间内求出从 k= 0 到 n 的 x^k 的总和

java - 随机播放函数复杂性

c++ - multimap 的时间复杂度问题

algorithm - 渐近。如果 f(n) = theta(g(n)) 且 g(n) = theta(h(n)),那么为什么 h(n) = theta(f(n))

c - 二部图中的最大匹配

c# - 最小边界四叉树节点

recursion - 以下函数的空间复杂度是多少以及如何?

algorithm - 这两种位计数算法的时间复杂度相同吗?