首页 > 其他分享 >24. 两两交换链表中的结点

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

时间:2023-01-06 01:11:07浏览次数:31  
标签:24 结点 last head next 链表 None 节点

题目链接

https://leetcode.cn/problems/swap-nodes-in-pairs/description/

解题思路

首先这是个递归问题,因为它可以明显的缩小问题规模。既然是递归的问题,那我们按照递归的一般思路来。

首先,我们考虑递归函数的参数和返回值。

因为这个题目和上一个题目,题号为2的题目不一样,那个题目有2个链表所以我们不知道究竟应该返回哪个。

但这个题目是一个链表,我们可以放心的用缩小规模的定义。

参数显然就是题目给出的一个链表。返回值是处理好的链表。

其次我们看本层处理什么,以及如何缩小问题规模。

本层是需要将本节点和下一个节点进行逆序操作。我们可以设置freq和last节点分别指向这两个节点。进行逆序操作之后,再接到下一层处理好的链表上。

最后,我们考虑边界条件(递归退出条件)

当前节点为None,或者当前节点的下一个节点为None时,代表我们没有办法进行归一化的处理,此时直接返回当前节点即可。

代码

# 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
        freq, last = head, head.next
        freq.next = self.swapPairs(last.next)
        last.next = freq
        return last

 

标签:24,结点,last,head,next,链表,None,节点
From: https://www.cnblogs.com/bjfu-vth/p/17029280.html

相关文章

  • 链表
    1.什么是链表链表(LinkedList):一种线性表数据结构。它使用一组任意的存储单元(可以是连续的,也可以是不连续的),来存储一组具有相同类型的数据。即「链表」是实现线性表......
  • list双链表
    structlistnode{structlistnode*next;structlistnode*prev;void*data;};structlist_head{ structlist_head*next,*prev;};/*Linkedlistof......
  • CP1024 单词切分
    又是一道小题,(但是也不是空格作为分割符,范围更广)本质上还是连续字符串,又考了判断嵌套啊俺的做法:#include<stdio.h>#include<ctype.h>#include<string.h>intmain()......
  • 静态链表
    以下是链表的相关实现函数单链表//head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点inthead,e[N],ne[N],idx;//初始化voidin......
  • python 删除链表倒数第n个节点
    defdelete_k_node(self,head,index):"""删除链表倒数第k个节点:paramhead::paramindex::return:"""......
  • URAL2124 - Algebra on Segment
    题意维护一个序列,支持区间乘\(x\),和查询区间的\(Span\)的大小。一个集合的\(Span\)定义为可以表示成其中若干可重复整数的乘积的数的集合。所有计算在模\(p\)意义......
  • C++实现有序表--链表的合并操作代码
    #include<iostream>#include<cstdlib>usingnamespacestd;#defineMAXSIZE100#defineOK1#defineERROR0typedefintElemtype;typedefintStatus;typedefstructLNo......
  • 24*8点 段码LCD液晶显示驱动控制电路(IC/芯片)-VK0192M 具省电模式,可兼容替代市面1622
    产品品牌:永嘉微电/VINKA产品型号:VK0192M封装形式:LQFP44概述:VK0192MLQFP44是一个点阵式存储映射的LCD驱动器,可支持最大192点(24SEGx8COM)的LCD屏。单片机可通过3/4线串行......
  • [转]24点计算器
    来自:https://ip138.com/24dian/ (function(){functioncalc24(){varexpression=[].slice.call(arguments).sort();varoperator=['+','-'......
  • 单链表
    单链表typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList1.不带头结点boolInitList(LinkList&L){L=NULL;returntr......