难度:中等。
熟悉链表操作。
正确解法:
/**
* 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) {
if(!head)return NULL;
if(!head->next)return head;
ListNode* temp = head, *ans = head;
int i = 0;
while(temp->next){
if(i == 0){
ans = temp->next;
i = 1;
}else{
ListNode* m = temp->next;
if(!m->next)break;
temp->next = m->next;
temp = m;
}
ListNode* node = temp->next;
temp->next = node->next;
node->next = temp;
}
return ans;
}
};