LeetCode —— 206. 反转链表

98 阅读1分钟

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

思路

思路比较简单,具体如下

  • cur.next = prev (当前节点的后继节点指向前驱节点)
  • prev = cur (前驱节点指向当前节点)
  • cur = cur.next (当前节点指向后继节点)

完整代码

/**
* Definition for singly-linked list.
* function ListNode(val) {
*     this.val = val;
*     this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
   let [cur,prev] = [head,null]
   while(cur)
       [cur.next,prev,cur] = [prev,cur,cur.next]
   return prev
};

性能

时间复杂度:O(n)

空间复杂度:O(1)