LeetCode 143.重排链表

news2024/9/29 19:16:37

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目解析

        分析题目后我们可以直接进行模拟实现。

        具体用到的就是我们之前的知识的结合,首先使用快慢指针找到链表的中间结点。然后将后半段链表给翻转一下,然后再让这两个链表进行合并。

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution 
{
public:
    // 找出链表中点
    ListNode* middleListNode(ListNode* head)
    {
        ListNode* slow=head,* fast=head;
        while(fast->next!=nullptr&&fast->next->next!=nullptr)
        {
            slow=slow->next;
            fast=fast->next->next;
        }
        return slow;
    }
    // 翻转链表
    ListNode* reverselist(ListNode* l)
    {
        ListNode* cur=l;
        ListNode* prev=nullptr;
        while(cur)
        {
            ListNode* next=cur->next;
            cur->next=prev;
            prev=cur;
            cur=next;
        }
        return prev;
    }
    // 合并链表
    void reorderList(ListNode* head) 
    {
        if(head==nullptr||head->next==nullptr||head->next->next==nullptr) return;
        ListNode* midnode=middleListNode(head);
        ListNode* l1=head;

        ListNode* l2=midnode->next;
        midnode->next=nullptr;
        l2=reverselist(l2);
        ListNode* phead=new ListNode(0);
        ListNode* temp=phead;
        while(l1||l2)
        {
            if(l1)
            {
                temp->next=l1;
                l1=l1->next;
                temp=temp->next;
            }
            if(l2)
            {
                temp->next=l2;
                l2=l2->next;
                temp=temp->next;
            }
        }
        // ListNode* l1next;
        // ListNode* l2next;
        
        // while(l1!=nullptr&&l2!=nullptr)
        // {
        //     l1next=l1->next;
        //     l2next=l2->next;
            
        //     l1->next=l2;
        //     l1=l1next;

        //     l2->next=l1;
        //     l2=l2next;
        // }
    }
};

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

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

相关文章

Kotlin异常处理runCatching,getOrDefault,getOrNull run(2)

Kotlin异常处理runCatching&#xff0c;getOrDefault&#xff0c;getOrNull run&#xff08;2&#xff09; fun main(args: Array<String>) {runCatching {1 / 0 //发生异常}.getOrNull().run {println(this)}println("-")runCatching {1 / 1 //正常}.getOrNul…

2023年失业了,想学一门技术可以学什么?

有一个朋友&#xff0c;大厂毕业了&#xff0c;原本月薪估计有5w吧&#xff0c;年终奖也不错&#xff0c;所以早早的就买了房生了娃&#xff0c;一直是人生赢家的姿态。 但是今年突然就被毕业了&#xff0c;比起房货还有个几百万没还来说&#xff0c;他最想不通的是自己的价值…

“悦己经济”升温,鲜花产业如何利用软文获客

在消费结构升级的大环境下&#xff0c;人们越来越注重精神层面的追求&#xff0c;“悦己消费”正在成为主流&#xff0c;鲜花逐渐成为生活中的必需品&#xff0c;鲜花业务的不断拓宽和鲜花消费场景的丰富将会吸引更多消费者。那么在竞争激烈的鲜花产业中&#xff0c;商家们应该…

账户权限

目录 1. 文件的一般权限 1.1. 文件详细信息 1.2. 文件权限构成 示例&#xff1a; 1.3. chmod命令 1.3.1. 参数 示例&#xff1a; 扩展&#xff1a;隐藏权限(chattr a) 1.4. chown命令 示例&#xff1a; 2. 特殊权限 2.1. 概述 2.2. SUID权限 2.3. SGID 权限 2.4…

深度优先(DFS) (例子:全排列,迷宫)

深度搜索是一种计算机算法&#xff0c;用于在图或树等数据结构中查找目标节点。深度搜索从一个节点出发&#xff0c;依次遍历其所有子节点&#xff0c;直到找到目标节点或遍历完所有节点。如果找到目标节点&#xff0c;则搜索结束&#xff1b;如果遍历完所有节点仍未找到目标节…

文心一言 VS 讯飞星火 VS chatgpt (109)-- 算法导论10.1 7题

七、用go语言&#xff0c;说明如何用两个队列实现一个栈&#xff0c;并分析相关栈操作的运行时间。 文心一言&#xff1a; 在Go语言中&#xff0c;我们可以用两个队列&#xff08;queue1和queue2&#xff09;实现一个栈。以下是实现代码&#xff1a; package main import &…

拉绳位移传感器钢丝绳角度偏离过大就会减少使用寿命

拉绳位移传感器钢丝绳角度偏离过大就会减少使用寿命 拉绳位移传感器还有一种情况就是&#xff0c;如果钢丝绳在恶劣的环境中作业&#xff0c;磨损&#xff0c;挤压&#xff0c;弯折等非正常使用&#xff0c;也更容易使钢丝绳断裂。位移传感器在作业中&#xff0c;钢丝绳角度偏离…

【JavaEE初阶】 线程的状态和转移

文章目录 &#x1f332;线程的状态&#x1f340;观察线程的所有状态&#x1f38d;线程状态和状态转移的意义&#x1f38b;观察线程的状态和转移&#x1f4cc;观察 1:&#x1f4cc;观察 2:&#x1f4cc;观察-3: ⭕总结 &#x1f332;线程的状态 &#x1f340;观察线程的所有状态…

设计模式 - 解释器模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 解释器模式&#xff08;Interpreter Pattern&#xff09;指给定一门语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;该解释器使用该表示来解释语言中的句子&#xff0c;属于行为型设计模式。是…

redis 事物

Redis事务 一个队列中&#xff0c;一次性、顺序性、排他性的执行一系列命令 正常执行 放弃事务 在exec执行之前&#xff0c;报错&#xff0c;则所有命令都不会执行 在exec执行后&#xff0c;报错&#xff0c;则其它正确的指令会执行&#xff0c;错误的命令会抛弃 watch 监…

一文搞懂二叉树先序遍历的三种方法

系列文章&#xff1a; 相关题目&#xff1a; 144. 二叉树的前序遍历 先序遍历结果为&#xff1a;1 2 4 5 3 6 7 总体上分为两种框架&#xff0c;递归框架和非递归框架&#xff0c;递归框架又分为两种思路&#xff1a;分解思路和遍历思路。 递归 1、分解思路 【分解为子问题】…

OLED透明拼接屏在乌海湖旅游区的应用探究

作为一名资深的OLED透明拼接屏工程师&#xff0c;我希望通过这篇文章来介绍一下OLED透明拼接屏在乌海这座城市中的表现&#xff0c;并对该城市的历史、景点、管辖范围进行简要介绍。 最后&#xff0c;我将讨论OLED透明拼接屏在乌海适用的行业和领域&#xff0c;并列举一些优缺…

在windows7中运行pycharm报错误“无法定位程序输入点 CreateAppContainerProfile 于动态链接库 USERENV.dll 上

截图&#xff1a; 解决办法&#xff1a; 一时不知道怎么办。一想之前是好好的&#xff0c;不知道被什么破坏了。所以恢复系统解决。

Prometheus集成consul[被监控对象开启basic认证]

1&#xff0c;被监控对象开启basic认证 具体操作这里不再详细细讲。 2&#xff0c;将被监控对象注册到consul 由于被监控对象开启了basic认证&#xff0c;注册到consul后显示&#xff1a;401 Unauthorized Output: Unauthorized&#xff0c;不能够正常健康检查。 3&#xff0c…

找不到d3dx9_35.dll,无法继续执行代码解决方法

今天&#xff0c;我要和大家分享&#xff1a;d3dx9_35.dll丢失怎么解决。 首先&#xff0c;我们需要了解什么是d3dx9_35.dll文件。d3dx9_35.dll是一个动态链接库文件&#xff0c;它是DirectX 9中的一个重要组件&#xff0c;通常被用于游戏和多媒体软件中。如果我们的电脑中缺少…

功能测试复习

一。测试流程 1.需求评审 确保各部门需求理解一致 2.计划编写 测什么&#xff0c;谁来测&#xff0c;怎么测 3.用例设计 验证项目是否符合需求的操作文档 4.用例执行 项目模块开发完成开始执行用例文档实施测试 5.缺陷管理 对缺陷进行…

图片上传并映射回显

目录 简介 代码展示 1、配置图片保存地址 2、拦截器配置映射地址 3、接口 简介 我们知道文件的上传就是把本地的文件上传到服务器上&#xff08;在服务器中指定地址保存&#xff09;&#xff1b;通过访问服务器地址去查看文件&#xff1b;但是直接通过域名和保存地址是无…

【单片机】17-温度传感器DS18B20

1.DS18B20相关背景知识 1.温度传感器 &#xff08;1&#xff09;测温度的方式&#xff1a;物理&#xff08;汞柱&#xff0c;气压&#xff09;&#xff0c;电子&#xff08;金属电性能随温度变化&#xff09; &#xff08;2&#xff09;早期&#xff1a;热敏电阻&#xff08;模…

青岛建筑模板厂家有哪些?

在青岛地区&#xff0c;有许多建筑模板厂家供应各类建筑模板材料。其中&#xff0c;一家备受认可的建筑模板厂家是广西贵港市的能强优品木业公司。该公司具备全面的生产能力和优质的产品质量&#xff0c;在青岛地区的建筑施工企业中有着广泛的合作经验。 能强优品木业公司提供全…

【密评】商用密码应用安全性评估从业人员考核题库(八)

商用密码应用安全性评估从业人员考核题库&#xff08;八&#xff09; 国密局给的参考题库5000道只是基础题&#xff0c;后续更新完5000还会继续更其他高质量题库&#xff0c;持续学习&#xff0c;共同进步。 1751 判断题 根据GM/T0016《智能密码钥匙密码应用接口规范》&#x…