超越《王者》!《原神》全球使用者支出突破176億元
阿新 • • 發佈:2022-04-28
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; } };