leetcode 148. Sort List(链表排序)

LeetCode 148:排序链表 (Sort Linked List) 优先熟练掌握递归归并排序,作为 LeetCode AC 的首选。迭代归并排序在强调空间复杂度下非常重要。拓展常见链表排序变形,熟悉归并/快排的变体问题应对跨题目场景! 阅读详情

在这里插入图片描述链表排序。

思路:
链表没有下标,如果是两个已经排好序的链表组合到一起,那就简单了,直接merge sort,
那能不能分而治之,把一个链表不断地拆成两个,直到拆到为空或者只有一个元素,这样必然是排好序的,然后再逐渐merge,拼成整个链表。
拆成两部分用快慢指针就可以,但是注意,一定要把慢指针(也就是中间点)的前面指针断开,这样才达到拆分的目的。

    public ListNode sortList(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode fast = head;
        ListNode slow = head;
        ListNode pre = head;
        while(fast != null) {
            pre = slow;
            slow = slow.next;
            if(fast.next == null) break;
            fast = fast.next.next;
        }
        pre.next = null;
        return merge(sortList(head), sortList(slow));
    }
    
    ListNode merge(ListNode h1, ListNode h2) {
        if(h1 == null) return h2;
        if(h2 == null) return h1;
        //head.next指向第一个元素,这样就不用考虑一直更新head的问题
        ListNode head = new ListNode();
        //指向当前的元素
        ListNode tmp = new ListNode();
        tmp = head;
        
        while(h1 != null && h2 != null) {
            if(h1.val < h2.val) {
                tmp.next = h1;
                h1 = h1.next;
            } else {
                tmp.next = h2;
                h2 = h2.next;
            }
            tmp = tmp.next;
        }
        if(h1 != null) tmp.next = h1;
        if(h2 != null) tmp.next = h2;
        return head.next;
    }
APB Timer验证环境搭建——学习笔记(6) (1)为RELOAD VALUE配置初始值32'h8000_0000,设定边界值32'h4000_0000,可以看到减到想要的边界值的时候,counter重新加载RELOAD VALUE,重新开始计数;这根线,统计等待到中断的次数,与理论值做。(2)设定Reload value。(1)由于counter。recount总共次数; 阅读详情

相关推荐

STM32实战:手把手教你移植CanFestival协议栈(附完整代码)

本文提供了一份详尽的STM32平台移植CanFestival协议栈的实战指南。文章从工程搭建、定时器驱动、CAN硬件适配到对象字典配置,手把手讲解核心步骤,并附完整代码示例。重点剖析了时间管理、报文收发等关键环节的实现与常见问题解决方案,旨在帮助开发者深入理解并成功实现CANopen通信。

kiwi8的博客 273

LeetCode | Sort List

题目 Sort a linked list in O(n log n) time using constant space complexity. 分析 由于要求O(nlgn)的时间复杂度,自然就是归并排序、堆排序、快速排序;但是,还要求了O(1)空间复杂度。 如果递归不算空间的话,可以采用递归的归并排序。 如果使用非递归的归并排序,由于是单向链表,没法像数组那样直接指定元素位置

1159

Unsloth Desktop 本地大模型微调量化实战指南

大语言模型的本地化定制正在成为开发者与内容创作者的重要需求,而微调与量化则是其中最关键的两项技术。LoRA 与 QLoRA 通过仅训练少量低秩矩阵,大幅降低显存占用和训练成本,让消费级 GPU 也能完成模型适配;GGUF 格式则打通了训练与推理的边界,使微调后的模型可直接接入 Ollama、llama.cpp 等主流推理引擎。本文以 Unsloth Desktop 为切入对象,从其底层加速原理出发,梳理了环境准备、模型加载、对话测试、量化导出、微调验证及 API 批量调用的完整链路,并针对显存优化、端口冲突

weixin_29055137的博客 397

LeetCode148——Sort List——merge sort

这道题的题面非常简单,就是简单的对一个乱序的链表进行排序。 以往做的排序问题很多,但是大多数都是在数组中进行排序的。关于链表的排序做的比较少,这里专门开一贴来记录链表中的排序算法。注意这里所说的面向链表的排序算法特指game of pointers,也就是说这里不考虑有些人把数字取到vector里再sort一下放回链表的讨巧做法。 一、插入排序 这是我首先想到的算法,而且它确实非常适合链表这种数据结构。 插入排序需要保留一个有序区,所以这里我用了[Head, Tail]这个区间来指出有序区域的范围,那么我

zheyuan的博客 338

十一种室内定位传感器方案汇总介绍与对比(机器人、物联网领域)

室内定位传感器方案汇总 目录 室内定位传感器方案汇总 1、定位方案概述 1.1、内定位系统有最基本的5种算法: 1.2、常用的室内定位技术主要包括以下几种: 1.3、定位理论 1.4、不同的定位方案对比 2、各种定位方案详细介绍 2.1、单线激光定位 2.2、多线激光定位: 2.3、视觉定位: 2.4、基于射频识别(RFID)技术室内定位 2.4.1、RFID标签(不涉及...

JK-Cool的博客 3万+

Docker容器化部署Ceph集群:从零搭建高可用分布式存储

本文详细介绍了如何使用Docker容器化部署Ceph集群,从零搭建高可用分布式存储系统。通过环境一致性、快速扩容和资源隔离等优势,Docker显著提升了Ceph集群的部署效率和运维便捷性。文章涵盖硬件规划、镜像选择、单节点部署、多节点扩展及性能调优等实战内容,帮助开发者快速掌握分布式存储系统的容器化部署技巧。

weixin_29081101的博客 422

LeetCode--Sort List

Sort a linked list in O(n log n) time using constant space complexity. MergeSort对于链表的排序,实现了就地排序的同时,时间复杂度和空间复杂度都达到了基于比较的排序的最优值,因此归并排序是链表排序的最佳排序方式。 /** * Definition for singly-linked list. * str

Leon_THU的专栏 871

卷积码Viterbi译码算法原理及C语言实现

具体而言,卷积码的编码过程是将输入数据和编码器中的状态进行异或操作,输出码字为各个状态对应的结果。Viterbi译码算法是一种最大似然译码算法,根据接收到的含有噪声的码字,寻找出最有可能的原始数据序列。(2) 递推计算:根据接收到的码字和当前状态,计算下一时刻各个状态的路径度量,并记录每个状态的前驱状态。以上代码实现了一个简单的卷积码Viterbi译码算法,通过接收到的码字进行译码,并输出解码结果。(1) 初始化:将所有状态的路径度量初始化为一个很大的值,选择路径度量最小的状态作为起始状态。

2301_79331421的博客 825

LeetCode sortList 对链表进行排序

参考资料:左程云算法课。

萝卜丝儿皮尔 171

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 3402

【软考】数据库系统工程师备考指南(一)

目录一、数据库系统工程师简介二、考试要求三、考试目标四、考试范围(一)信息系统知识(二)数据库系统设计与管理 一、数据库系统工程师简介 数据库系统工程师考试属于全国计算机技术与软件专业技术资格(水平)考试(简称计算机软件水平资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。笔试安排在一天之内。 2022 年数据库系统工程

邓邓子的博客 3859

[Leetcode][Python] 148. Sort List 排序链表

[Leetcode][Python] 148. Sort List 排序链表题目大意解题思路 1:归并排序代码解题思路 2:借助列表和sort()代码 题目大意 题目连接: Given the head of a linked list, return the list after sorting it in ascending order. Follow up: Can you sort the linked list in O(n logn) time and O(1) memory (i.e. con

TwinkleZhao的博客 422

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LeetCode 148. Sort List 单链表排序 Python Solution

此题目对应于LeetCode 148 题目要求: Sort a linked list in O(n log n) time using constant space complexity. 用O(n log n) 的排序算法,很容易让人想到用递推去做。 思路就是将单链表一分为二划分成两个子问题,然后递归调用算法,最后在做一个对两个 有序的单链表的合并操作(O(n))。

u011452172的博客 1626

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Leetcode 148 Sort List 单链表排序

在O(nlogn)时间复杂度和常数空间复杂度内对单链表进行排序。

(ง •̀_•́)ง 2669

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode148 Sort List 链表排序

Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4-&gt;2-&gt;1-&gt;3 Output: 1-&gt;2-&gt;3-&gt;4 Example 2: Input: -1-&gt;5-&gt;3-&gt;4-&gt;0 Output: -1-...

李歇特冯-兹拜因巴哈的博客 154

LeetCode 148.Sort List 排序链表

题目描述 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 来源:力扣(LeetCode) 链接:https://leetcode...

it-hao的博客 245

LeetCode148 Sort List 排序链表

1. problem description Sort a linked list in O(n log n) time using constant space complexity(在 O(n log n) 时间复杂度和常数级空间复杂度下). eg1: Input: 4->2->1->3 Output: 1->2->3->4 eg2: Input: -...

地山谦的博客 165

LeetCode 148. 排序链表(Sort List)

易错点说明快慢指针未正确断链是断开关键未处理情况base case 条件不能漏merge()指针逻辑写错注意 tail 的移动与连接顺序使用快排/堆排不适用于链表,性能/实现都不友好归并排序是链表排序的最优解法。借助快慢指针找中点,递归合并实现排序。

2501_91641025的博客 452

LeetCode 148. Sort List(链表排序,Medium)

LeetCode 148. Sort List (Medium) 难度 : Medium 1、题目描述 Sort a linked list in O(n log n) time using constant space complexity. 排序一个链表,要求以 O(n log n) 的时间复杂度和常数级的空间复杂度。 例1 : Input: 4->2->1->3 Out...

Ascexz的博客 332

leetcode-148. Sort List 链表排序

Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4-&gt;2-&gt;1-&gt;3 Output: 1-&gt;2-&gt;3-&gt;4 Example 2: Input: -1-&gt;5-&gt;3-&gt;4-&...

别说话写代码的博客 443

Leetcode148. Sort List排序链表

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4-&gt;2-&gt;1-&gt;3 输出: 1-&gt;2-&gt;3-&gt;4 示例 2: 输入: -1-&gt;5-&gt;3-&gt;4-&gt;0 输出: -1-&gt;0-&gt;3-&gt;4-&gt;5   不推荐: class Solution { pub

lMonster81 199

【Leetcode】148. 排序链表(Sort List)

No148. 排序链表 题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 示例1 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例2 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例3 输入:head = [] 输出:[] 提示 链表中节点的数目在范围 [0, 5 * 104] 内 -105 <= Node

Xiao_Spring的博客 693

LeetCode 148. Sort List(排序链表)

题目 求解 分析:题目要求时间复杂度是O(nlogn),我想到的是可以使用快排,但是数据是存在链表中的,我们只有第一个节点的引用,需要遍历链表,取出数据并排序,对原链表数据按照排序结果赋值,最后返回头结点。 过程: 1、保存头结点,取出数据保存在数组中。 ListNode firstNode=head; if(head==null) return null; ...

马一凡的博客 380
上一篇: pytorch LayerNorm说明
下一篇: leetcode 165. Compare Version Numbers(比较版本号)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值