C++ | Leetcode C++题解之第143题重排链表

题目:

题解:

class Solution {
public:
    void reorderList(ListNode* head) {
        if (head == nullptr) {
            return;
        }
        ListNode* mid = middleNode(head);
        ListNode* l1 = head;
        ListNode* l2 = mid->next;
        mid->next = nullptr;
        l2 = reverseList(l2);
        mergeList(l1, l2);
    }

    ListNode* middleNode(ListNode* head) {
        ListNode* slow = head;
        ListNode* fast = head;
        while (fast->next != nullptr && fast->next->next != nullptr) {
            slow = slow->next;
            fast = fast->next->next;
        }
        return slow;
    }

    ListNode* reverseList(ListNode* head) {
        ListNode* prev = nullptr;
        ListNode* curr = head;
        while (curr != nullptr) {
            ListNode* nextTemp = curr->next;
            curr->next = prev;
            prev = curr;
            curr = nextTemp;
        }
        return prev;
    }

    void mergeList(ListNode* l1, ListNode* l2) {
        ListNode* l1_tmp;
        ListNode* l2_tmp;
        while (l1 != nullptr && l2 != nullptr) {
            l1_tmp = l1->next;
            l2_tmp = l2->next;

            l1->next = l2;
            l1 = l1_tmp;

            l2->next = l1;
            l2 = l2_tmp;
        }
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apple WWDC24的18条总结:从GPT-4o开始集成ChatGPT

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之…

通过 CartPole 游戏详细说明 PPO 优化过程

CartPole 介绍 在一个光滑的轨道上有个推车,杆子垂直微置在推车上,随时有倒的风险。系统每次对推车施加向左或者向右的力,但我们的目标是让杆子保持直立。杆子保持直立的每个时间单位都会获得 1 的奖励。但是当杆子与垂直方向成 15 度以上的…

以太网基础知识(二)——PAM4NRZ

概念:PAM4(Pulse Amplitude Modulation 4)是用于将数字数据转换成模拟信号。在400G以太网中PAM4被用于将数字数据转换成光信号以便在光纤中传输。PAM4技术通过改变光信号的振幅和相位来表示4个不同的数字状态,每个状态代表2个比特…

46-4 等级保护 - 网络安全等级保护概述

一、网络安全等级保护概述 原文:没有网络安全就没有国家安全 二、网络安全法 - 安全立法 中华人民共和国主席令 第五十三号 《中华人民共和国网络安全法》已于2016年11月7日由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议通过,并自2017年6月1日起正式…

问题:高炉风口前的燃烧带的边界是以()含量降为1%为界限标志的。 #媒体#媒体#笔记

问题:高炉风口前的燃烧带的边界是以()含量降为1%为界限标志的。 参考答案如图所示

RESTful API最佳实践:Python构建指南

目录 一、引言 二、RESTful API设计原则 三、Python构建RESTful API的技术栈 四、Flask构建RESTful API实践 安装Flask 定义路由和资源 处理HTTP方法 错误处理 数据验证和序列化 使用Flask扩展 五、最佳实践案例 七、结论 一、引言 在当今的软件开发领域&#…

C51学习归纳10 --- 单总线通信协议、DS18B20

通信协议是最重要的,我们之前学习了I2C通信协议,这一节我们学习一下新的通信协议,单总线通信。 一、开发板原理图 可以看出直接由P3_7口控制,但是遵循单总线协议。 单总线的电路要求 现在介绍单总线的通信协议细节: 1…

免费插件集-illustrator插件-Ai插件-文本属性批处理

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行文本属性批处理。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

【递归、搜索与回溯】综合练习 {回溯恢复现场;剪枝优化}

一、经验总结 在递归算法中某些变量需要在回溯到上一层递归后恢复现场(如递归路径),恢复现场的方法有: 全局变量手动恢复:如果该变量的类型为自定义类型(vector, string等)则推荐定义为全局变…

全彩LED显示屏可视角度分析

在当今数字化时代,全彩LED显示屏已成为公共场所、商业中心、体育赛事等场合传递信息与视觉震撼的重要媒介。然而,对于这些显示屏而言,一个关键的技术指标——可视角度,直接决定了观众能否从各个方位享受到一致且优质的视觉体验。本…

SQLserver前五讲课堂笔记

第一讲 基本内容 为什么要学习数据库系统?什么是数据库?什么是数据库系统?什么是数据库管理系统?本课程学什么以及学到什么程度? 重点难点 一组概念的区分:数据库、数据库系统和数据库管理系统熟悉表 的相关要素及术语熟悉数据库系统的构成(工作…

win10怎么截图?电脑截图的3个方法分享

win10怎么截图?在Windows 10操作系统中,截图功能不仅强大而且极其便捷。无论用户需要快速捕捉整个屏幕的内容,还是精确截取屏幕上的特定区域,它都能迅速响应并满足需求。通过内置的截图工具和快捷键,我们可以轻松完成各…

SwiftUI中自定义ViewModifier

在SwiftUI中,ViewModifier是一种强大的工具,用于封装和复用视图修改逻辑。通过创建自定义的ViewModifier,我们可以以一种干净且可维护的方式重用视图配置和样式。本文将介绍如何在SwiftUI中创建和使用自定义ViewModifier。 ViewModifier是一…

【Linux】ls命令

这个命令主要是用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。 掌握几个重点的常使用的就可以: ls -l # 以长格式显示当前目录中的文件和目录 ls -a # 显示当前目录中的所有文件和目录&am…

【内存管理】内存布局

ARM32位系统的内存布局图 32位操作系统的内存布局很经典,很多书籍都是以32位系统为例子去讲解的。32位的系统可访问的地址空间为4GB,用户空间为1GB ~ 3GB,内核空间为3GB ~ 4GB。 为什么要划分为用户空间和内核空间呢? 一般处理器…

BarTender 常见的使用要点

BarTender 简述 BarTender是由美国海鸥科技(Seagull Scientific)推出的一款条码打印软件,被广泛应用于标签、条形码、证卡和RFID标记的设计和打印领域。它在全球范围内拥有众多用户,被公认为标签打印方面的全球领先者。BarTender…

一.iOS核心动画 - 关于图层与视图

引言 Core Animation听起来会让人误以为它只是用来做动画的,但是事实上它是从Layer Kit库演变而来的,其中做动画的功能只是Core Animation特性的一小部分。 Core Animation是一个复核引起,它的作用就是尽可能快地组合屏幕上不同的显示内容&…

【Vue】getters

除了state之外,有时我们还需要从state中筛选出符合条件的一些数据,这些数据是依赖state的,此时会用到getters getters就类似于属性中的计算属性 这个getter只有获取,如果需要设置修改,还是需要经过mutations getters里…

实验四、零比特插入《计算机网络》

但凡这句话有一点用的话也不至于一点用都没有。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 掌握零比特插入原理及方法使用任意编程语言实现零比特插入方法。 二、实验内容 掌握零比特插入原理及方法 点对点协议 PPP(Point-to-Point Protoco…

8.11 矢量图层线要素单一符号使用六(光栅线)

文章目录 前言光栅线(Raster Line)QGis设置线符号为光栅线(Raster Line)二次开发代码实现光栅线(Raster Line) 总结 前言 本章介绍矢量图层线要素单一符号中光栅线(Raster Line)的使…