【Leet Code】24. Swap Nodes in Pairs(C++)


隣り合う2つのNodeを全て入れ替える問題です

下記はC++の実装例です

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode dummy_head(0, head);
        ListNode* prev = &dummy_head;
        while (prev->next != nullptr && prev->next->next != nullptr) {
            ListNode* swap1 = prev->next;
            ListNode* swap2 = swap1->next;
            ListNode* after = swap2->next;
            prev->next = swap2;  // 1
            swap2->next = swap1; // 2
            swap1->next = after; // 3
            prev = swap1;
        }
        return dummy_head.next;
    }
};

dummyのNodeを使用しているのが1つポイントです。

図で理解するなら下記のイメージになります

以上です!

,

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です