Swap-nodes-in-pairs
https://leetcode.com/problems/swap-nodes-in-pairs/
Description
Given a linked 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 the list is in the range
[0, 100]
.0 <= Node.val <= 100
Follow up: Can you solve the problem without modifying the values in the list's nodes? (i.e., Only nodes themselves may be changed.)
Solution & follow up
solution
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(!head)
return nullptr;
auto temphead = head;
while(temphead && temphead->next){ //if pair exist
swap(temphead->val , temphead->next->val); // swap node val
temphead = temphead->next->next; // move to another pair
}
return head;
}
};
follow up
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if (!head || !(head -> next)) return head;
ListNode* new_head = new ListNode(0);
new_head -> next = head;
ListNode* pre = new_head;
ListNode* cur = head;
while (pre -> next && cur -> next) {
pre -> next = cur -> next;
cur -> next = cur -> next -> next;
pre -> next -> next = cur;
pre = cur;
cur = pre -> next;
}
return new_head -> next;
}
};
最后更新于
这有帮助吗?