LeetCode--HOT100题(33)
目录
- 题目描述:148. 排序链表(中等)
- 题目接口
- 解题思路
- 代码
- PS:
题目描述:148. 排序链表(中等)
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
LeetCode做题链接:LeetCode-排序链表
示例 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.val <= 105
进阶: 你可以在 O(nlog n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?
题目接口
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode sortList(ListNode head) {}
}
解题思路
参考题解:Sort List (归并排序链表)
思路:递归
- 1.用二分法的方法将列表从中间分割,再把分割的列表继续从中间分割,分割到最小单位(快慢指针)
- 2.递归终止条件: 当 head.next == None 时,说明只有一个节点了,直接返回此节点
- 3.再返回两个分割列表的合并列表(合并有序列表)
可以跟着这个图理解一下~

代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode sortList(ListNode head) {// 1、递归结束条件if (head == null || head.next == null) {return head;}// 2、找到链表中间节点并断开链表 & 递归下探ListNode midNode = middleNode(head);ListNode rightHead = midNode.next;// 截断列表midNode.next = null;// 递归,不断下探到最深出最低端,再合并返回ListNode left = sortList(head);ListNode right = sortList(rightHead);// 3、当前层业务操作(合并有序链表)return mergeTwoLists(left, right);}// 找到链表中间节点(876. 链表的中间结点)private ListNode middleNode(ListNode head) {if (head == null || head.next == null) {return head;}ListNode slow = head;ListNode fast = head.next.next;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;}return slow;}// 合并两个有序链表(21. 合并两个有序链表)private ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode sentry = new ListNode(-1);ListNode curr = sentry;while(l1 != null && l2 != null) {if(l1.val < l2.val) {curr.next = l1;l1 = l1.next;} else {curr.next = l2;l2 = l2.next;}curr = curr.next;}curr.next = l1 != null ? l1 : l2;return sentry.next;}
}
PS:
感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个赞喔~
相关文章:
LeetCode--HOT100题(33)
目录 题目描述:148. 排序链表(中等)题目接口解题思路代码 PS: 题目描述:148. 排序链表(中等) 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 LeetCode做题链接࿱…...
【docker练习】
1.安装docker服务,配置镜像加速器 看这篇文章https://blog.csdn.net/HealerCCX/article/details/132342679?spm1001.2014.3001.5501 2.下载系统镜像(Ubuntu、 centos) [rootnode1 ~]# docker pull centos [rootnode1 ~]# docker pull ubu…...
韦东山-电子量产工具项目:业务系统
代码结构 所有代码都已通过测试跑通,其中代码结构如下: 一、include文件夹 1.1 common.h #ifndef _COMMON_H #define _COMMON_Htypedef struct Region {int iLeftUpX; //区域左上方的坐标int iLeftUpY; //区域左下方的坐标int iWidth; //区域宽…...
React(6)
1.React插槽 import React, { Component } from react import Child from ./compoent/Childexport default class App extends Component {render() {return (<div><Child><div>App下的div</div></Child></div>)} }import React, { Compon…...
RabbitMq-2安装与配置
Rabbitmq的安装 1.上传资源 注意:rabbitmq的版本必须与erlang编译器的版本适配 2.安装依赖环境 //打开虚拟机 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xz3.安装erlan…...
论文笔记:Continuous Trajectory Generation Based on Two-Stage GAN
2023 AAAI 1 intro 1.1 背景 建模人类个体移动模式并生成接近真实的轨迹在许多应用中至关重要 1)生成轨迹方法能够为城市规划、流行病传播分析和交通管控等城市假设分析场景提供仿仿真数据支撑2)生成轨迹方法也是目前促进轨迹数据开源共享与解决轨迹数…...
redis实战-缓存数据解决缓存与数据库数据一致性
缓存的定义 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪,这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存…...
【排序】选择排序
文章目录 选择排序时间复杂度空间复杂度稳定性 代码 选择排序 以从小到大为例进行说明。 选择排序就是定义出一个最小值下标,然后遍历整个剩下的数组选择出最小的放进最小值下标的位置。 时间复杂度 O(N) 遍历一次即可 空间复杂度 O(1) 稳定性 不稳定 代码 p…...
深入浅出Pytorch函数——torch.nn.init.trunc_normal_
分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...
探索高级UI、源码解析与性能优化,了解开源框架及Flutter,助力Java和Kotlin筑基,揭秘NDK的魅力!
课程链接: 链接: https://pan.baidu.com/s/13cR0Ip6lzgFoz0rcmgYGZA?pwdy7hp 提取码: y7hp 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍: 📚【01】Java筑基:全方位指…...
国外服务器怎么有效降低延迟
国外服务器怎么有效降低延迟?在全球化网络环境下,越来越多的企业和个人选择使用国外服务器来托管网站、应用程序或数据。然而,由于地理位置、网络连接等因素,使用国外服务器时可能会遇到延迟较高的问题。高延迟不仅影响用户体验,…...
AI百度文心一言大语言模型接入使用(中国版ChatGPT)
百度文心一言接入使用(中国版ChatGPT) 一、百度文心一言API二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API 基于百度文心一言语言大模型…...
vue 安装并配置vuex
1.安装vuex命令:npm i vuex3.6.2 2.全局配置 在main文件里边导入-安装-挂载 main.js页面配置的 import Vue from vue import App from ./App.vue import Vuex from vuex//导入 Vue.use(Vuex)//安装插件 // 创建store对象 const store new Vuex.Store({ }) // 挂载到vue对象上…...
有一种新型病毒在 3Ds Max 环境中传播,如何避免?
3ds Max渲染慢,可以使用渲云渲染农场: 渲云渲染农场解决本地渲染慢、电脑配置不足、紧急项目渲染等问题,可批量渲染,批量出结果,速度快,效率高。 此外3dmax支持的CG MAGIC插件专业版正式上线,…...
基于Java/springboot铁路物流数据平台的设计与实现
摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,铁路物流数据平台当然也不能排除在外,从文档信息、铁路设计的统计和分析,在过程中会产生大量的、各…...
比较杂的html元素
abbr 表示缩写 time 踢动给浏览器或搜索引擎阅读的事件;看着没什么效果 b 以前是一个无语义元素,主要用于加粗字体,有了css之后,加粗就不需要b元素了。 现在作为提醒注意(Bring Attention To)元素&…...
Docker基本管理
前言一、Docker简介1.1 什么是docker1.2 docker的logo及其含义1.3 docker的设计宗旨1.4 容器的优点1.5 容器和虚拟机的区别1.6 docker容器的两个重要技术1.7 docker的核心概念 二、安装 Docker三、Docker 镜像操作1、搜索镜像2、获取镜像3、查看镜像信息4、查看下载的镜像文件信…...
.NET Core6.0使用NPOI导入导出Excel
一、使用NPOI导出Excel //引入NPOI包 HTML <input type"button" class"layui-btn layui-btn-blue2 layui-btn-sm" id"ExportExcel" onclick"ExportExcel()" value"导出" />JS //导出Excelfunction ExportExcel() {…...
用API接口获取数据的好处有哪些,电商小白看过来!
API接口获取数据有以下几个好处: 1. 数据的实时性:通过API接口获取数据可以实时获取最新的数据,保证数据的及时性。这对于需要及时更新数据的应用非常重要,比如股票行情、天气预报等。 2. 数据的准确性:通过API接口获…...
使用struct解析通达信本地Lday日线数据
★★★★★博文原创不易,我的博文不需要打赏,也不需要知识付费,可以白嫖学习编程小技巧,喜欢的老铁可以多多帮忙点赞,小红牛在此表示感谢。★★★★★ 在Python中,struct模块提供了二进制数据的打包和解包…...
单细胞分群避坑指南:为什么你的CD4+T细胞总被污染?(含清洗技巧)
单细胞分群避坑指南:为什么你的CD4T细胞总被污染?(含清洗技巧) 在单细胞测序数据分析中,CD4T细胞的分群常常让研究者头疼不已。明明按照标准流程操作,为什么我的CD4T细胞群总是混入其他细胞?这…...
汽车电子 - AutoSAR CAN通信栈:从硬件对象到软件缓冲的实战解析
1. AutoSAR CAN通信栈的核心概念解析 第一次接触AutoSAR CAN通信栈时,我被各种专业术语搞得晕头转向。经过几个项目的实战,终于摸清了其中的门道。CAN通信栈就像快递公司的物流系统,硬件是运输车辆,软件是调度中心,而报…...
文墨共鸣大模型智能体(Agent)开发入门:构建自动化任务执行系统
文墨共鸣大模型智能体(Agent)开发入门:构建自动化任务执行系统 你有没有想过,让AI不仅能回答问题,还能像人一样思考、规划,并主动使用工具去完成任务?比如,你告诉它“帮我查一下北京…...
如何快速提升像素画创作效率:探索Piskel精选工具与功能
如何快速提升像素画创作效率:探索Piskel精选工具与功能 【免费下载链接】piskel A simple web-based tool for Spriting and Pixel art. 项目地址: https://gitcode.com/gh_mirrors/pi/piskel Piskel是一款简单易用的基于Web的像素画创作工具,专为…...
浦语灵笔2.5-7B应用落地:教育场景中数学题截图自动解题流程
浦语灵笔2.5-7B应用落地:教育场景中数学题截图自动解题流程 1. 项目背景与价值 作为一名长期从事AI教育应用开发的技术人,我深知数学学习中的痛点:学生遇到难题时,往往需要等待老师或同学的帮助,这个过程可能打断学习…...
从游戏到医疗:用Touch™和OpenHaptics 3.5解锁Windows力反馈应用新场景(附Unity与C++双环境配置要点)
从游戏到医疗:Touch™力反馈技术的跨界应用与开发实践 想象一下,外科医生在虚拟手术训练中感受到真实的组织阻力,汽车维修学员通过触觉反馈"触摸"到发动机零件的磨损痕迹,游戏玩家在射击游戏中体验到不同武器的后坐力差…...
WarcraftHelper终极指南:解锁魔兽争霸3现代硬件潜力的完整方案
WarcraftHelper终极指南:解锁魔兽争霸3现代硬件潜力的完整方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为经典的即时战…...
智能资金概念在算法交易中的深度解析:从理论到实战应用
智能资金概念在算法交易中的深度解析:从理论到实战应用 【免费下载链接】smartmoneyconcepts This is a python package for smart money concept indicators 项目地址: https://gitcode.com/gh_mirrors/smar/smartmoneyconcepts 在当今算法交易领域…...
保姆级教程:用SAP LSMW的Standard Batch/Direct Input搞定BOM批量导入(附FILE逻辑文件配置避坑指南)
SAP LSMW实战:BOM批量导入全流程解析与避坑指南 引言:为什么选择Standard Batch/Direct Input? 刚接触SAP PP模块的顾问们,第一次面对BOM批量导入任务时往往手足无措。Excel表格里整齐排列的物料清单,如何在SAP系统中…...
Gradio实战:用gr.Button和gr.Markdown打造高颜值交互界面(附CSS美化技巧)
Gradio界面美学革命:从基础组件到高级定制的全链路设计指南 在AI应用爆炸式增长的今天,一个美观直观的交互界面已经成为产品成功的关键因素。Gradio作为最受欢迎的AI应用快速构建工具,其默认样式往往难以满足专业级产品的视觉需求。本文将带您…...
