解题思路-leetcode第二十四题:两两交换链表中的节点
题目描述:
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3。
本题采用递归的方法,每一次递归,交换链表的前两个节点,当链表内没有节点或只有一个节点时,返回该链表。代码开头判断,是否符合结束条件,若符合则返回链表,然后定义两个指针,first指向输入链表头节点,second指向链表第二个节点,然后将first指向后面交换返回的子链表,second指向first,最后返回交换完成的链表。代码如下:
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
first = head
second = head.next
first.next = self.swapPairs(second.next)
second.next = first
return second
提交后,通过。