24. Swap Nodes in Pairs
阿新 • • 發佈:2021-05-06
24.Swap Nodes in Pairs
Medium
3591208Add to ListShare
Given alinked list, swap every two adjacent nodes and return its head.
Example 1:
Input: head = [1,2,3,4] Output: [2,1,4,3]
Example 2:
Input: head = [] Output: [] Example 3:
Input: head = [1] Output: [1]
Constraints:
- The number of nodes in thelistis in the range
[0, 100]
0 <= Node.val <= 100
Follow up:Can you solve the problem withoutmodifying the values in the list's nodes? (i.e., Only nodes themselves may be changed.)
連結串列的特點:是把指標指向轉換
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode *dummy = new ListNode(0); dummy->next = head; if(head==NULL || head->next==NULL){ return head; } ListNode *current = dummy; while(current->next!=NULL && current->next->next!=NULL){ ListNode *first = current->next; ListNode *second = current->next->next; first->next = second->next; second->next = first; current->next = second; current = current->next->next; } return dummy->next; } };