leetcode24~Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

public class SwapNodesinPairs {
    public ListNode swapPairs(ListNode head) {
       if(head==null) return null;
       ListNode dummyNode = new ListNode(-1);
       //指向交換過節點對的前一個節點
       ListNode pre = dummyNode;
       dummyNode.next = head;
       //指向要交換節點對的第一個節點
       ListNode cur = head;
       //節點數可能是奇數或者偶數 作爲判斷終止條件
       //每次以pre cur 和 cur.next作爲一組,進行不斷的節點對交換
       while(cur!=null && cur.next!=null) {
           ListNode next = cur.next;
           cur.next = next.next;
           next.next = cur;
           pre.next = next;

           cur = cur.next;
           pre = pre.next.next;
       }
       return dummyNode.next;
    }

    public ListNode swapPairs2(ListNode head) {
        if(head==null || head.next==null) return head;
        ListNode node = head.next;
        head.next = swapPairs(head.next.next);
        node.next = head;
        return node;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章