java - LinkedList.subList(int, int) 的时间复杂度

标签 java data-structures time-complexity big-o

如果我有一个对象链表并且我想要从索引 2 到 5 的子列表。这个操作是 o(1) 吗?您需要做的就是将索引 2 处的节点上对 prev 的引用设为空,然后返回索引 2 处的节点,对吗?这是否需要将链表的内容复制到另一个链表中并返回该链表,或者只是将头部设置为索引 2 处的节点?

最佳答案

Is this operation o(1)?

一般来说,获取链表的子列表是O(k),而不是O(1)*

但是,对于任何特定的索引值,例如 2、5 或 5000,任何操作都是 O(1),因为特定的索引变成了从 Big-O 表示法中分解出来的常量。

* 可以优化子列表的构建,这样您就可以在子列表的第一个导航而不是构建时支付构建成本。换句话说,构造子列表而不迭代它是 O(1)。

关于java - LinkedList.subList(int, int) 的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980714/

相关文章:

algorithm - 在算法复杂度分析中考虑大上限

java - 如何检索与从 RESTful Web 服务发送的视频或图像关联的元数据?

java - Eclipse JRE 系统库 [J2SE-1.5]

python - 如何找到任意两个数字的索引,其总和等于 Python 中的目标总和?

c - 编译时出现C2148的结构

java - 如何在 UI 上显示表格中的 100 万条数据

c - 我的老师声称这个代码块在 O(n) 时间内运行……这是为什么呢?

java - 在 for 循环内的 if that 内包含 2 个 for 循环的代码的复杂性是多少

java - 将 ActionBar 添加到 PreferenceActivity

java - 如何检测我的应用程序是否被另一个调用