gpt4 book ai didi

java - 这个反向单链表算法的复杂度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:55 29 4
gpt4 key购买 nike

这个算法的复杂度是多少?我假设它是 O(N) 但我想澄清一下。如果我在链表中​​有一个尾部,我会假设这会更快,因为我会完全避免让 while(current != null) 循环循环到列表的末尾。

public void reverse() {
Stack<Node> stack = new Stack<Node>();
if (this.head != null || this.head.next != null) {
Node current = this.head;
while (current != null) {
stack.push(current);
current = current.next;
}
Node last = null;
while (!stack.empty()) {
if (last==null) {
this.head = stack.pop();
last = this.head;
continue;
}
last.next = stack.pop();
last = last.next;
if (stack.empty()) {
last.next = null;
}
}
}
}

最佳答案

你通过迭代列表将所有链表元素插入堆栈,这是一个 N 然后你迭代堆栈,这是另一个 N 所以你在 O(2N) 中排序符号

参见 how to reverse a list with O(1) space and O(n) time?

关于java - 这个反向单链表算法的复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996130/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com