【LeetCode】24.兩兩交換連結串列中的節點
阿新 • • 發佈:2018-12-21
給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。
示例:
給定 1->2->3->4, 你應該返回 2->1->4->3
思路:因為都是先交換兩個節點,在合併。即可以轉化為子問題求解。
class Solution { public ListNode swapPairs(ListNode head) { //如果此連結串列沒有節點或者只有一個節點,直接返回 if(head == null || head.next == null){ return head; } ListNode first = head; //此節點為要交換的節點 ListNode swapNext = head.next; //定義一個節點來記住要交換的下一個節點 ListNode firstNextNext = swapNext.next; //將交換節點的next置為它的前一個節點 swapNext.next = first; //使用遞迴來實現交換,並將交換後的頭結點返回 ListNode swapNextNext = swapPairs(firstNextNext); //將first節點的next置為返回的連結串列節點 first.next = swapNextNext; //返回此連結串列交換後的頭結點 return swapNext; } }