成对交换节点。给一个linked list,请成对调换node。例子

我的思路是迭代。依然是给一个dummy节点放在head节点之前,然后dummy.next是head节点,nextStart是第三个节点。我画了一个示意图,这样不容易错。

时间O(n)

空间O(1)

 1 /**
 2  * @param {ListNode} head
 3  * @return {ListNode}
 4  */
 5 var swapPairs = function(head) {
 6     // corner case
 7     if (head === null || head.next === null) {
 8         return head;
 9     }
10
11     // normal case
12     let dummy = new ListNode(0);
13     dummy.next = head;
14     let l1 = dummy;
15     let l2 = head;
16     while (l2 !== null && l2.next !== null) {
17         let nextStart = l2.next.next;
18         l1.next = l2.next;
19         l2.next.next = l2;
20         l2.next = nextStart;
21         l1 = l2;
22         l2 = l2.next;
23     }
24     return dummy.next;
25 };
01-11 16:55
查看更多