[leetcode] 24. 兩兩交換鏈表中的節點
阿新 • • 發佈:2018-07-02
script vat middle com nod int 水題 ger pre
24. 兩兩交換鏈表中的節點
水題啊,不想說啥。分析題意,可發現兩個節點切換時,需要改動的除了兩個節點,還有兩個節點的前一個節點。代碼中middle與back,代表將要交換的兩個節點。
class Solution { public ListNode swapPairs(ListNode head) { ListNode p = new ListNode(Integer.MAX_VALUE); ListNode ans = p; p.next = head; while (p != null) { ListNode front = p; ListNode middle = p.next; if (middle == null) break; ListNode back = p.next.next; if (back == null) break; swap(front, middle, back); p = p.next; p = p.next; } return ans.next; } private void swap(ListNode front, ListNode middle, ListNode back) { front.next = back; middle.next = back.next; back.next = middle; } }
[leetcode] 24. 兩兩交換鏈表中的節點