24. Swap Nodes in Pairs - Medium

前往題目

想法

  • 每個node重新指向就好
  • 要從最後面開始,不然會指到錯的

思路

  1. 兩個指針
  2. 照著規律交換,然後謹慎處理pointer

Code

和我想的不太一樣,是可以直接從頭開始,謹慎處理指針和條件就不會null pointer

最有可能出錯的地方就是要存nextPair的時候,但while的條件使得curr.next.next頂多就是null而已,不會出錯

class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode dummy = new ListNode(0, head);

        // Pointers
        ListNode prev = dummy, curr = head;

        // Make sure a pair
        while (curr != null && curr.next != null) {
            // Save pointers
            ListNode nextPair = curr.next.next;
            // Second node of a pair
            ListNode second = curr.next;

            // Swap nodes
            second.next = curr;
            curr.next = nextPair;
            prev.next = second;

            // Assign new pair
            prev = curr;
            curr = nextPair;
        }
        return dummy.next;
    }
}

2024/04/26

  • 這題簡單,重新指向要注意null和指錯就行

2024/10/15

  • 簡單,只不過寫得有點慢:D

24. Swap Nodes in Pairs - Medium
https://f88083.github.io/2023/12/16/24-Swap-Nodes-in-Pairs-Medium/
作者
Simon Lai
發布於
2023年12月16日
許可協議