LeetCode#24 | Nobilta's Blog
0%

LeetCode#24

LeetCode#24两两交换链表中的节点

题目链接
题面很简单,将所有节点两两交换,我先想到的是使用循环的方式,但是题解给出了更简单的递归写法。使用递归的好处是可以不用考虑两节点交换后后面那个节点的next节点应该连接到哪个节点(如果遍历的话,每次交换的两个节点的后节点的next指针将很难处理,因为后节点也需要进行交换)
附代码:

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(head == nullptr || head -> next == nullptr)
return head;
ListNode* node = head -> next;
head -> next = swapPairs(node -> next);
node -> next = head;
return node;
}
};
您的支持将鼓励我继续创作!