输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
【思路】:
本题要设计一个时间复杂度O(n), 空间复杂度O(1)的算法来反转链表。
在遍历链表时,将当前节点的指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。
【代码】:
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
let prev = null;
let curr = head;
while(curr != null){
let next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
};