首页 > 编程语言 >[Python手撕]重排链表

[Python手撕]重排链表

时间:2024-09-27 10:03:23浏览次数:1  
标签:dummy head cur2 cur1 Python next 链表 tail 重排

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reorderList(self, head: Optional[ListNode]) -> None:
        """
        Do not return anything, modify head in-place instead.
        """

        fast,slow = head,head

        while fast.next and fast.next.next:
            fast = fast.next.next
            slow = slow.next

        cur = slow.next
        slow.next = None

        dummy = ListNode(-1)

        while cur:
            t = cur
            cur = cur.next
            t.next = dummy.next
            dummy.next = t


        cur1,cur2 = head,dummy.next
        dummy = ListNode(-1)
        tail = dummy
        while cur1 and cur2:
            
            tail.next = cur1
            cur1 = cur1.next
            tail = tail.next
            tail.next = None

            tail.next = cur2
            cur2 = cur2.next
            tail = tail.next
            tail.next = None

        if cur1:
            tail.next = cur1
        if cur2:
            tail.next = cur2

        return dummy.next


标签:dummy,head,cur2,cur1,Python,next,链表,tail,重排
From: https://www.cnblogs.com/DCFV/p/18435104

相关文章

  • 链表
    链表SingleListArrayList的缺陷在熟悉并且自己写了一个ArrayList顺序表的底层架构的时候发现ArrayList是利用数组来存储数据的效率比较低:这里说两个例子在插入以及删除的时候ArrayList都需要移动剩余的元素在开始的时候设置了初始的内存后续需要扩容这里也是效率低......
  • Python线程:如何让程序跑得更快?
    引言线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以拥有多个线程,这些线程共享进程的数据空间,并能并发执行,从而提高程序的效率。在Python中使用线程,可以让我们在编写网络爬虫、多任务处理等应用时更加游刃有余。接下来,我......
  • python最经典基础算法题-10
    题目001:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n【思路】:学了lambda想耍一下,结果发现官网写的比我还简洁!n=17fenmu=range(2,n+1,2)ifn%2==0elserange(1,n+1,2)s=sum(map(lambdax:1/x,fenmu))print(s)#官网参考......
  • Python线程终止:如何优雅地结束一场“舞蹈”
    引言线程终止在多线程编程中扮演着至关重要的角色。合理地管理线程生命周期不仅能够提升程序性能,还能避免内存泄漏等问题的发生。在实际开发过程中,我们常常会遇到需要提前终止某个线程的情况,比如用户请求取消正在进行的任务、系统资源紧张时需要释放部分线程以节省资源等。掌握正......
  • python 实现gradient boosting regressor梯度增强回归器算法
    gradientboostingregressor梯度增强回归器算法介绍梯度增强回归器(GradientBoostingRegressor,简称GBR)是一种集成学习算法,专门用于解决回归问题。它通过组合多个弱学习器(通常是决策树)来构建一个强大的预测模型。以下是关于梯度增强回归器算法的详细解释:原理梯度增强回......
  • Python实现:时间序列趋势外推法应用-龚珀兹曲线拟合
    龚珀兹曲线下表数据为某跨国公司1989-2021年的年销售量数据,使用适合的模型预测该公司2022年的销售额,并得出理由。部分数据如下表(具体数据从主页资源下载):年份时序(t)总额(yt)时序应该从0开始19891138.40019902174.00119913190.55219924196.10319935230.50419946237.10519957274.......
  • Python画笔案例-064 绘制彩花之旋转羽毛
    1、绘制彩花之旋转羽毛通过python的turtle库绘制彩花之旋转羽毛,如下图:2、实现代码 绘制彩花之旋转羽毛,以下为实现代码:"""彩花之旋转羽毛.py本程序需要coloradd模块支持,安装方法:pipinstallcoloradd技术支持微信scartch8,QQ:406273900www.lix......
  • python企业员工工作流引擎的研究 0f4m7
    目录python语言技术路线框架介绍具体实现截图技术栈和环境说明解决的思路性能/安全/负载方面核心代码部分展示详细视频演示源码获取方式python语言Python的扩展性也很好,其可以利用c语言编写模块,编译链接到解释器,从而使Python能够调用该c模块中的接口。反之,C语言也能......
  • 使用Conda配置python环境到Pycharm------Window小白版
    使用Conda配置python环境到Pycharm一、Conda安装和环境配置1.1安装Conda软件1.2判断是否安装成功1.3创建Conda虚拟环境二、pycharm的安装2.1Pycharm使用手册2.2安装pycharm三、pycharm导入Conda环境一、Conda安装和环境配置anaconda官网1.1安装Conda软......
  • AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python的问题。问题如下:我也遇到问题了..大佬们知道的帮忙解答下,很奇怪,不知道为什么nicegui库中input输入框的值不能用change改变的模式更改,但是可以选择直接赋值,我想让用户只能输入纯数字(不......