递归:两两交换链表节点

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迭代+递归)

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

Leetcode两两交换链表中的节点(24)

24. 两两交换链表中的节点

LeetCode - 24 - 两两交换链表中等的节点 - Java

两两交换链表中的节点