递归:两两交换链表节点
Posted 我家大宝最可爱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归:两两交换链表节点相关的知识,希望对你有一定的参考价值。
两两交换链表中的节点
首先假设子问题已经解决了,由于是两两交换节点,因此我们需要预留出两个节点出来才行,之前使用递归对链表求解的时候都是只需要操作head节点即可,但是这里要求两个节点交换,因此需要head和head.next两个节点,因此子问题的输入就是head.next.next了
最后写成代码如下
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
if head is None or head.next is None:
return head
sr = self.swapPairs(head.next.next)
t = head.next
t.next = head
head.next = sr
return t
以上是关于递归:两两交换链表节点的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode24. 两两交换链表中的节点(JAVA迭代+递归)