[LeetCode] 24. Swap Nodes in Pairs ☆☆☆(鏈表,相鄰兩節點交換)

Swap Nodes in Pairsnode

描述

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

示例:

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

說明:

  • 你的算法只能使用常數的額外空間。    code

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

思路

該題屬於基本的鏈表操做題。get

  • 設置一個虛擬頭結點dummyHeadit

  • 設置須要交換的兩個節點分別爲node1node2,同時設置node2的下一個節點nextclass

在這一輪操做中
  • node2節點的next設置爲node1節點List

  • node1節點的next設置爲next節點d3

  • dummyHead節點的next設置爲node2

  • 結束本輪操做

接下來的每輪操做都按照上述進行。

代碼

public static ListNode swapPairs(ListNode listNode) {
        if (listNode == null) {
            return null;
        }
        ListNode head = new ListNode(-1);
        head.next = listNode;
        ListNode pHead = head;
        while (pHead.next != null && pHead.next.next != null) {
            ListNode node1 = pHead.next;
            ListNode node2 = pHead.next.next;
            ListNode next = node2.next;
            
            node2.next = node1;
            node1.next = next;
            pHead.next = node2;
            
            pHead = node1;
        }
        return head.next;
    }
相關文章
相關標籤/搜索