问题描述
我认为它是 O(N) 因为在循环单列表中指针访问 n 个节点,因此要插入的节点在当前节点之前。
我做对了吗?
解决方法
通常的遍历和插入需要 O(N)
时间。但是,如果节点可以修改,也可以在 O(1)
中完成。
让列表看起来像 A -> B-> C -> D -> A
,我们得到一个指向 C
的指针,我们必须插入 E
。现在,创建 C
的副本并将其插入 C
本身之后。该列表现在看起来像 A -> B-> C -> C(copy) -> D -> A
。现在,我们可以修改原始 C
节点的值来存储 E
节点的值,因此列表现在变为 A -> B-> E -> C -> D -> A
。由于您只创建了一个节点并将其插入到位,因此需要 O(1)
时间复杂度。