成对交换节点。给一个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 };