力扣(LeetCode)143. 重排链表(C++)

news2024/11/19 20:27:44

模拟

五步做完 :
①遍历链表,得到链表长度
②找到中间结点
③反转链表后半段的结点指向
④重排链表
⑤尾结点的指向置空

初始链表 L 0 → L 1 → … → L n − 1 → L n L0 → L1 → … → Ln - 1 → Ln L0L1Ln1Ln
重排链表 L 0 → L n → L 1 → L n − 1 → L 2 → L n − 2 → … L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … L0LnL1Ln1L2Ln2

初始链表到重排链表的关系:从头结点往右,每两个结点之间插入未使用的尾结点。

pp

看反转后的链表,是不是很容易得到重排链表啊?是的。那个图的连线过于凌乱,想了解透彻的读者可以自己画图。算法实现请看代码。

class Solution {
public:
    void reorderList(ListNode* head) {
        auto a = head;
        int n = 0;
        for(;a;a = a->next) n++;
        auto mid = head;
        for(int i = 0;i<(n+1)/2-1;i++) mid = mid ->next;
        auto b = mid ->next;
        a = mid;
        while(b){
            auto c = b->next;
            b->next = a, a = b , b = c;
        }
        auto p = head , q = a;
        for(int i = 0;i<n/2;i++){
            auto o = q->next;
            q ->next = p->next;
            p->next = q;
            p = q->next;
            q = o;
        }
        if(n&1) mid ->next = NULL;
        else mid->next->next = NULL;
    }
};
  1. 时间复杂度 : O ( n ) O(n) O(n) n n n 是链表长度, 遍历链表常数次,忽略常数时间复杂度 O ( n ) O(n) O(n)
  2. 空间复杂度 : O ( 1 ) O(1) O(1) , 只使用常数级空间 。

AC

AC

致语

  • 理解思路很重要
  • 读者有问题请留言,清墨看到就会回复的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB数据库 —— 图形化工具

在前面通过使用MongoDB在命令窗口操作数据库&#xff0c;而MySQL数据库也同样可以在命令窗口使用sql语句操作数据库&#xff0c;在安装数据库的时候提到可以安装这个图形化工具的&#xff0c;为了节省安装时间和卡顿选择后续安装MongoDB图形化工具&#xff0c;在MySQL数据中同样…

[附源码]JAVA毕业设计疫情防控期间人员档案追演示录像上(系统+LW)

[附源码]JAVA毕业设计疫情防控期间人员档案追演示录像上&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#x…

Spring Cloud Zuul网关的介绍及使用

Zuul 是 Netflix OSS 中的一员&#xff0c;是一个基于 JVM 路由和服务端的负载均衡器。提供路由、监控、弹性、安全等方面的服务框架。Zuul 能够与 Eureka、Ribbon、Hystrix 等组件配合使用。 Zuul 的核心是过滤器&#xff0c;通过这些过滤器我们可以扩展出很多功能&#xff0…

猿如意中的【Linux命令查询】工具详情介绍

一、工具名称 Linux命令查询 二、下载安装渠道 Linux命令查询通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意&#xff1f; 猿如意是一款面向开发者的辅助开发工具箱&#xff0c;包含了效率工具、开发工具下载&#xff0c;教程文档&#xff0c;代码片段…

R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图

在某些情况下&#xff0c;你可能希望通过在每帧中添加数据并保留先前添加的数据来进行动画处理。最近我们被客户要求撰写关于动态可视化的研究报告&#xff0c;包括一些图形和统计输出。 现在&#xff0c;我们将通过制作点线图的动画来探索。 以下是制作图表静态版本的代码&a…

如何打造一个高效可用的组织知识库

作者 | 唐三 在管理改进活动中&#xff0c;衡量一个企业管理改进成功与否的一个重要指标就是组织知识库的构建和使用。 组织知识库是一个学习型组织在项目操作过程中所积累的无形资产&#xff0c;同时组织过程资产的累积程度是衡量一个项目组织管理体系成熟度的重要指标&#…

阿里云ECS安装VirtualBox

文章目录virtualbox repovirtualbox repo适配阿里云的OS修改virtualbox repo成功下载安装报错安装 libvpxvirtualbox repo [virtualbox] nameOracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox baseurlhttp://download.virtualbox.org/virtualbox/rpm/rhel/…

C#开发——Winform中ToolTip闪烁的解决方案

1、背景 首先要知道在何种情况下需要用tooltip控件&#xff0c;使用场景应该是&#xff1a;鼠标移入某个控件区域&#xff0c;显示tooltip的提示&#xff1b;移出后隐藏该提示。 采用的比较多的方式是&#xff0c;对该控件的MouseMove和MouseLeave事件进行处理。 至于为什么不是…

【产品人卫朋】华为销售体系 | 销售管理:LTC流程体系详解

LTC 是华为的三大主流程之一&#xff0c;从线索发现开始&#xff0c;直至收回现金&#xff0c;从而实现端到端地拉通。 三大主流程分别是&#xff1a; 其他流程可以参考之前文章&#xff1a; 华为IPD流程 华为ITR流程 继续今天的内容&#xff0c;在不同的流程环节卷入不同的…

[1.2.0新功能系列:一] Apache Doris 1.2.0 版本 Light Schema Change

在 1.2.0 新版本中&#xff0c;对数据表的加减列操作&#xff0c;不再需要同步更改数据文件&#xff0c;仅需在 FE 中更新元数据即可&#xff0c;从而实现毫秒级的 Schema Change 操作&#xff0c;且存在导入任务时效率的提升更为显著。与此同时&#xff0c;使得 Apache Doris …

干货 | Dubbo 接口测试原理及多种方法实践总结

1、什么是 Dubbo&#xff1f; Dubbo 最开始是应用于淘宝网&#xff0c;由阿里巴巴开源的一款优秀的高性能服务框架&#xff0c;由 Java 开发&#xff0c;后来贡献给了 Apache 开源基金会组织。 下面以官网的一个说明来了解一下架构的演变过程&#xff0c;从而了解 Dubbo 的诞…

【RNN:并行场景和纹理学习】

Infrared and visible image fusion via parallel scene and texture learning &#xff08;基于并行场景和纹理学习的红外与可见光图像融合&#xff09; 本文提出了一种基于并行场景和纹理学习的红外和可见光图像融合方法。我们的主要目标是部署深度神经网络的两个分支&…

登临科技加入飞桨硬件生态共创计划,共推AI应用规模化落地

近日&#xff0c;上海登临科技有限公司与飞桨签署硬件生态共创计划合作协议&#xff0c;正式加入由飞桨发起的硬件生态共创计划。当前双方的合作主要基于登临科技自主创新的通用GPU系列产品——Goldwasser&#xff08;高凛&#xff09;。 上海登临科技有限公司 高性能、通用…

松耦合式的权限控制设计,自定义权限表达式yyds!

背景 企业应用系统逐渐增多后&#xff0c;各系统单独管理各自的用户数据容易形成信息孤岛&#xff0c;分散的用户管理模式阻碍了企业应用向平台化演进&#xff0c;为降低企业系统设计开发、集成成本&#xff0c;打通技术闭环完善系统设计实现流程、优化提升系统设计实现的整体…

电子元器件行业如何做好库存管理优化?试试数商云B2B电商系统!

我们知道&#xff0c;企业的库存管理对企业各个部门的成本核算业务有着直接的影响&#xff0c;因此&#xff0c;优化企业库存管理对于企业的整体发展十分重要。对于电子元器件行业来说&#xff0c;许多中小规模的电子元器件分销商&#xff0c;由于早期缺乏管理经验&#xff0c;…

活体深度方向模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿 不断的利用 输入 不断的对比新的输入 查询暂时的记忆模块 查询后交互方法 之后得到新的输入 查询不到变使用 模型进行预测 交互 这样方能实现自我更新 自我 记忆 自我维护 不断个更新 设计

[volatile]关键字和wait()notify()详解

目录 1.内存可见性问题-引入 2.volatile关键字 3.从java内存模型的角度内存可见性问题 4.wait()和notify()方法 4.1 wait()方法 4.2 notify()方法 wait与sleep的区别(面试题) 4.3 notifyAll()方法 4.4 多个线程使用wait和notify方法 1.内存可见性问题-引入 构造一个…

阿里三面:说一说你在上家公司都用过哪些限流方案?

一、限流思路 常见的系统服务限流模式有&#xff1a;熔断、服务降级、延迟处理和特殊处理四种。 1、熔断 将熔断措施嵌入到系统设计中&#xff0c;当系统出现问题时&#xff0c;若短时间内无法修复&#xff0c;系统会自动开启熔断开关&#xff0c;拒绝流量访问&#xff0c;避…

数据库原理及MySQL应用 | 视图

视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制&#xff0c;透过视图用户可以看到数据表中看书需要的内容。 视图(View)是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。在用户看来&#xff0c;视图是通过不同角度去看实际表中的数据&…

如何在GPU上运行pandas和sklearn?

当涉及大量数据时&#xff0c;Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快&#xff0c;但处理大量数据仍然效率不高。 在以前过去&#xff0c;GPU 主要用于渲染视频和玩游戏。但是现在随着技术的进步大多数大型项目都依赖 GPU 支持&a…