题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
样例
给定 1->2->3->4, 你应该返回 2->1->4->3.
递归
class Solution {
public:
ListNode* swapPairs(ListNode* first) {
if (first == nullptr || first->next == nullptr) return first;
auto second = first->next;
first->next = swapPairs(second->next);
second->next = first;
return second;
}
};
时间复杂度 $O(n)$
空间复杂度 $O(n)$
迭代大家都懂