如果我有一个对象链表并且我想要从索引 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/