LeetCode 解題 --兩兩交換鏈表中的結點

給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換後的鏈表。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

示例:

給定 1->2->3->4, 你應該返回 2->1->4->3.

在這裏插入圖片描述

class Solution {
    public ListNode swapPairs(ListNode head) {
        //1 2 3 4
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
       ListNode pre = dummy;
       //當只有一個結點或者空的時候不反轉
       while(pre.next != null && pre.next.next !=null){
           ListNode node1 = pre.next;// 1
           ListNode node2 = pre.next.next;//2
           ListNode node = node2.next;//3

           node2.next = node1;//2-1
           node1.next = node; //1-3    pre  2-1-3-4
           pre.next = node2; //pre-2    pre-2-1-3-4

           //開始下一輪的反轉, pre要變成1,,處理1-3-4
           pre = node1;  
       }
       return dummy.next;
        }
    }

發佈了60 篇原創文章 · 獲贊 3 · 訪問量 2548
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章