1. 程式人生 > 遊戲 >超越《王者》!《原神》全球使用者支出突破176億元

超越《王者》!《原神》全球使用者支出突破176億元

24. 兩兩交換連結串列中的節點

給你一個連結串列,兩兩交換其中相鄰的節點,並返回交換後連結串列的頭節點。你必須在不修改節點內部的值的情況下完成本題(即,只能進行節點交換)。

示例 1:

輸入:head = [1,2,3,4]
輸出:[2,1,4,3]

示例 2:

輸入:head = []
輸出:[]

示例 3:

輸入:head = [1]
輸出:[1]

提示:

  • 連結串列中節點的數目在範圍 [0, 100]
  • 0 <= Node.val <= 100

思路:

​ 直接用了最簡單的暴力,用三個指標去不斷迭代,最後得出的就是答案。不過在這類題目中使用一個虛擬頭結點可以省不少事:)(個人認為)

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode* dummy=new ListNode(-1);
        dummy->next=head;
        ListNode* p1=dummy;
        ListNode* p2=dummy->next;
        if(p2==nullptr)return  nullptr;
        ListNode* p3=head->next;
        if(p3==nullptr)return head;

        //p2,p3有一個為空就終止迴圈
        while(p2!=nullptr&&p3!=nullptr){
            p2->next=p3->next;
            p3->next=p2;
            p1->next=p3;
            p1=p2;
            p2=p1->next;
            if(p2==nullptr)break;
            p3=p2->next;
        }
        return dummy->next;
    }
};