传送门
两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
实例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
虽然时间和空间复杂度都没别人低,但是我昨晚做不出来,今天考自己思考想出来了,我觉得可以记录一下haha
主要思路:
让第二个的next指针指向head,而head指向的是后半部分链表旋转后的“头指针”
所以用到递归可以很好处理这个重复的过程,如果结尾是只有一个数,那么久不用旋转,返回即可。
代码:
class Solution
{
public:
ListNode* swapPairs(ListNode* head)
{
if(!head||!head->next)return head;
ListNode* res=head->next;
ListNode* temp=res->next;
res->next=head;
head->next=swapPairs(temp);
return res;
}
};
多谢观看~