gpt4 book ai didi

java - 迭代地反转单向链表

转载 作者:行者123 更新时间:2023-11-29 09:49:18 26 4
gpt4 key购买 nike

必须为 O(n) 且就地(空间复杂度为 1)。下面的代码确实有效,但是否有更简单或更好的方法?

public void invert() {
if (this.getHead() == null)
return;
if (this.getHead().getNext() == null)
return;
//this method should reverse the order of this linked list in O(n) time
Node<E> prevNode = this.getHead().getNext();
Node<E> nextNode = this.getHead().getNext().getNext();
prevNode.setNext(this.getHead());
this.getHead().setNext(nextNode);
nextNode = nextNode.getNext();

while (this.getHead().getNext() != null)
{
this.getHead().getNext().setNext(prevNode);
prevNode = this.getHead().getNext();
this.getHead().setNext(nextNode);
if (nextNode != null)
nextNode = nextNode.getNext();
}
this.head = prevNode;
}

最佳答案

编辑以删除每次迭代的额外比较:

    public void invert() {
Node<E> prev = null, next = null;;
if (head == null) return;
while (true) {
next = head.getNext();
head.setNext(prev);
prev = head;
if (next == null) return;
head = next;
}
}

关于java - 迭代地反转单向链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943720/

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