Leetcode—148. 排序链表【中等】

news2024/11/26 17:24:31

2024每日刷题(171)

Leetcode—148. 排序链表

在这里插入图片描述

C++实现代码

/**
 * 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* sortList(ListNode* head) {
        ListNode dummy(0, head);
        int len = getLen(head);
        for(int k = 1; k < len; k *= 2) {
            ListNode* cur = dummy.next;
            ListNode* tail = &dummy;
            while(cur) {
                ListNode* l = cur;
                ListNode* r = split(l, k);
                cur = split(r, k);
                auto[mergeHead, mergeTail] = merge(l, r);
                tail->next = mergeHead;
                tail = mergeTail;
            }
        }
        return dummy.next;
    }
private:
    int getLen(ListNode* head) {
        ListNode* cur = head;
        int len = 0;
        while(cur) {
            len++;
            cur = cur->next;
        }
        return len;
    }

    pair<ListNode*, ListNode*> merge(ListNode* l, ListNode* r) {
        ListNode dummy(0);
        ListNode* tail = &dummy;
        while(l && r) {
            if(l->val > r->val) {
                swap(l, r);
            }
            tail->next = l;
            l = l->next;
            tail = tail->next;
        }
        tail->next = l? l: r;
        while(tail->next) {
            tail = tail->next;
        }
        return {dummy.next, tail};
    }

    ListNode* split(ListNode* head, int k) {
        while(--k && head) {
            head = head->next;
        }
        ListNode* rest = head ? head->next: nullptr;
        if(head != nullptr) {
            head->next = nullptr;
        }
        return rest;
    }
};

运行结果

在这里插入图片描述
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

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

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

相关文章

java计算机毕设课设—坦克大战游戏

这是什么系统&#xff1f; 坦克大战游戏是一款以坦克为主题的射击游戏&#xff0c;旨在为玩家提供一个刺激、有趣的游戏体验。该游戏不仅拥有丰富的功能&#xff0c;还注重玩家的互动体验。此系统是使用Java语言实现坦克大战游戏程序&#xff0c;玩家通过连接访问进入游戏&…

【C++】—— 类和对象(上)

【C】—— 类和对象(上) 文章目录 【C】—— 类和对象(上)前言1. 类的定义1.1 类定义格式1.2 访问限定符1.3 类域 2. 实例化2.1 实例化概念2.2 对象的大小 3. this指针4. C和C语言实现Stack对比结语 前言 小伙伴们大家好呀&#xff0c;今天我们就开始学习C的重点及难点——类和…

[python]Flask_Login

flask_login是flask框架中的一个拓展功能&#xff0c;用于更快捷的实现用户会话管理功能&#xff0c;主要处理登录&#xff0c;注销和长时间会话存储的功能处理。 目录 安装 使用 第一步,配置SECRET_KEY 第二步,创建LoginManager实例绑定app 第三步,用户类继承UserMixin …

Github优质项目推荐-第三期

文章目录 Github优质项目推荐 - 第三期一、【coding-interview-university】&#xff0c;305k stars - 软件工程师学习计划二、【drawdb】&#xff0c;20.1k stars - 数据库设计工具三、【twenty】&#xff0c;16k stars - 排名第一的开源 CRM四、【Douyin-Vue】&#xff0c;9.…

海南网站建设提升网站用户体验实用技巧

海南网站建设提升网站用户体验实用技巧 在当今数字时代&#xff0c;网站已成为企业展示形象和吸引客户的重要平台。尤其对于海南这一旅游胜地来说&#xff0c;优化网站用户体验显得尤为重要。以下是一些实用技巧&#xff0c;可帮助您提升网站的用户体验。 首先&#xff0c;确保…

柔性作业车间调度(FJSP)

1.1 调度问题的研究背景 生产调度是指针对一项可分解的工作(如产品制造),在尽可能满足工艺路线、资源情况、交货期等约束条件的前提下,通过下达生产指令,安排其组成部分(操作)所使用的资源、加工时间及加工的先后顺序,以获得产品制造时间或成本最优化的一项工作。 一般研究车间…

django的路由分发

前言&#xff1a; 在前面我们已经学习了基础的Django了&#xff0c;今天我们将继续学习&#xff0c;我们今天学习的是路由分发&#xff1a; 路由分发是Web框架中的一个核心概念&#xff0c;它指的是将不同的URL请求映射到对应的处理函数&#xff08;视图&#xff09;的过程。…

发现一篇瑞芯微RK3588上使用Gstreamer的文章(野火)

1. 前言 最近经常使用英伟达的Orin和瑞芯微RK3588做开发,自己还买了好几块开发板,很多需要自己琢磨,今天忽然发现了一篇文章,意外解决了一些之前的问题,以此作为记录: 文章链接:https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/lubancat_rk_software_har…

Redis基础三(redis的高级配置)

Redis进阶配置 一、Redis持久化操作 ​ 持久化就是把内存的数据写到磁盘中去&#xff0c;防止服务宕机了内存数据丢失。&#xff08;Redis 数据都放在内存中。如果机器挂掉&#xff0c;内存的数据就不存在。所以需要做持久化&#xff0c;将内存中的数据保存在磁盘&#xff0c…

Gralloc图形缓冲的分配过程

广告 首先帮我朋友打个广告 我们一起在运营一个视频号 感兴趣的可以帮忙点击右边这个小铃铛 铃铛 序 其实越往底下走在很多人嘴里就会变得很玄乎&#xff0c;变得不可思议&#xff0c;这里的gralloc就是一个native service&#xff0c;只是分装了一些调用接口&#xff0c;上…

使用Scikit-image进行图像处理入门

简介 在数据科学的广阔领域中&#xff0c;图像处理占据了重要的一席之地&#xff0c;为分析和处理视觉数据提供了各种工具和技术。Python 拥有丰富的库生态系统&#xff0c;为图像处理提供了多种选择&#xff0c;其中&#xff0c;scikit-image 凭借其强大且易用的功能脱颖而出…

记录使用gym和stable_baseline3训练出成功通关的贪吃蛇ai

参考自b站up林亦LYi的开源项目 传送门 本次只训练了cnn版本的 第一次接触这种项目&#xff0c;建python虚拟环境时出了点难以说清楚的小问题&#xff0c;安装不上requirement.txt中的gym库那个版本&#xff0c;折腾了一会&#xff0c;自己都乱了头绪&#xff0c;最后导致训练…

TMGM:黄金价格持稳,而WTI原油价格和天然气价格飙升

黄金价格顽强地拒绝下跌&#xff0c;昨天和周三继续抵制下行的趋势。 价格继续保持在近期的历史高位附近&#xff0c;很可能会有进一步上涨的动力。美元走强阻止了价格的进一步上涨&#xff0c;但总体上升趋势仍在进行中。 目前还没有明显的向下催化剂迹象&#xff0c;不过如…

c++联合体

// // Created by 徐昌真 on 2024/10/5. // #include <iostream> using namespace std;//定义一个结构体 struct DataS{ //内存空间独立int a;double b;char c[10]; };//定义一个联合体 union DataU{ //内存空间在一起int a;double b;char c[10]; };int main() {//创建…

Pikachu-目录遍历

目录遍历&#xff0c;跟不安全文件上传下载有差不多&#xff1b; 访问 jarheads.php 、truman.php 都是通过 get 请求&#xff0c;往title 参数传参&#xff1b; 在后台&#xff0c;可以看到 jarheads.php 、truman.php所在目录&#xff1a; /var/www/html/vul/dir/soup 图片…

奥博思软件总经理刘玉军受邀为项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 北京奥博思软件技术有限公司联合创始人、总经理刘玉军先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“高效协作的秘密&#xff1a;项目管理平台助力跨部门协作”。大会将于…

信息学奥赛复赛复习12-CSP-J2021-01分糖果-模运算、余数、打擂台求最值、最大值、最小值

PDF文档回复:20241005 **1 P7909 [CSP-J 2021] 分糖果 ** [题目描述] 红太阳幼儿园有 n 个小朋友&#xff0c;你是其中之一。保证 n≥2 有一天你在幼儿园的后花园里发现无穷多颗糖果&#xff0c;你打算拿一些糖果回去分给幼儿园的小朋友们 由于你只是个平平无奇的幼儿园小朋…

【数学分析笔记】第4章第4节 复合函数求导法则及其应用(2)

4. 微分 4.4 复合函数求导法则及其应用 【例4.4.3】 y e 1 cos ⁡ x ye^{\sqrt{1\cos x}} ye1cosx ​&#xff0c;求 y ′ y y′ 【解】 y ′ e 1 cos ⁡ x ⋅ 1 2 1 cos ⁡ x ⋅ ( − sin ⁡ x ) − sin ⁡ x 2 1 cos ⁡ x e 1 cos ⁡ x ye^{\sqrt{1\cos x}}\cdot\f…

【LeetCode】每日一题 2024_10_5 完成旅途的最少时间(二分答案)

前言 每天和你一起刷 LeetCode 每日一题~ 大家国庆节快乐呀~ LeetCode 启动&#xff01; 突然发现&#xff0c;国庆的每日一题&#xff0c;不是坐公交就是坐火车&#xff0c;不是坐火车就是做飞机&#xff0c;这就是你的国庆旅游计划吗&#xff01;力扣&#xff01; 题目&a…

今日凌晨,ChatGPT重磅更新!—— 我心目中的终极AGI界面

今日凌晨&#xff0c;ChatGPT重磅更新&#xff01;—— 我心目中的终极AGI界面 我心目中的终极 AGI 界面是一张空白画布&#xff08;canvas&#xff09;。 今日凌晨&#xff0c;OpenAI 发布 canvas&#xff0c;一个与 ChatGPT 合作写作和编程的新界面&#xff01; canvas&…