LeetCode Hot100 148.排序链表

题目

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

class Solution {public ListNode sortList(ListNode head) {return sortList(head, null);}private ListNode sortList(ListNode head, ListNode tail) {if (head == null)return null;if (head.next == tail) {head.next = null;return head;}// 找到链表的中点ListNode slow = head, fast = head;while (fast != tail && fast.next != tail) {slow = slow.next;fast = fast.next.next;} // 循环结束 slow是中点ListNode mid = slow;ListNode list1 = sortList(head, mid);ListNode list2 = sortList(mid, tail);ListNode sorted = merge(list1, list2);return sorted;}// 合并两个有序链表private ListNode merge(ListNode head1, ListNode head2) {ListNode dummyHead = new ListNode(0); // 哨兵ListNode temp = dummyHead, temp1 = head1, temp2 = head2;while(temp1 != null && temp2 != null) {if (temp1.val <= temp2.val) {temp.next = temp1;temp1 = temp1.next;} else {temp.next = temp2;temp2 = temp2.next;}temp = temp.next;}if (temp1 != null) {temp.next = temp1;} else if (temp2 != null) {temp.next = temp2;}return dummyHead.next;}
}

class Solution {// 自底向顶,从单独的1个有序开始合并public ListNode sortList(ListNode head) {if (head == null) {return head;}int length = 0;ListNode node = head;while (node != null) {length++;node = node.next;}ListNode dummyHead = new ListNode(0, head); // 哨兵for (int subLength = 1; subLength < length; subLength <<= 1) {ListNode prev = dummyHead, curr = dummyHead.next;while (curr != null) {// 前两个有序子链ListNode head1 = curr;for (int i = 1; i < subLength && curr.next != null; i++) {curr = curr.next;}ListNode head2 = curr.next;curr.next = null;curr = head2;for (int i = 1; i < subLength && curr != null && curr.next != null; i++) {curr = curr.next;}// 处理第 3 4个子链开始需要的情况ListNode next = null;if (curr != null) {next = curr.next;curr.next = null;}ListNode merged = merge(head1, head2);prev.next = merged;// 找到第3个子链的headwhile (prev.next != null) {prev = prev.next;}curr = next;}}return dummyHead.next;}
}

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

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

相关文章

深入解析MSSQL聚簇索引:加速查询的利器

在大数据时代&#xff0c;高效的数据库索引是保证系统性能的关键。而在MSSQL数据库中&#xff0c;聚簇索引是一项强大的技术&#xff0c;它能够极大地提升查询性能和数据访问效率。本文将深入探讨聚簇索引的原理、与其他索引的区别&#xff0c;以及适用的场景和关键技术点&…

【贪心】LeetCode-55. 跳跃游戏

55. 跳跃游戏。 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 …

回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 &#xff08;多指标…

计算机网络:运输层

0 本节主要内容 问题描述 解决思路 1 问题描述 1.1 知识回顾 利用如下拓扑对前面的知识进行回顾。 问题&#xff1a;源主机 H 1 \textrm{H}_1 H1​要和目的主机 H 2 \textrm{H}_2 H2​进行通信&#xff0c;源主机 H 1 \textrm{H}_1 H1​要构建数据包封装来自应用层的数据。…

【产品应用】一体化伺服电机在TO全自动封焊机中的应用

随着科技的飞速发展&#xff0c;自动化设备在各行各业中的应用越来越广泛。在电子制造领域&#xff0c;封焊机是关键设备之一&#xff0c;其性能直接影响产品的质量和产量。近年来&#xff0c;一体化伺服电机在TO全自动封焊机中的应用逐渐受到关注。本文将详细介绍一体化伺服电…

DCNv2安装适配pytorch各个版本

DCNv2安装适配pytorch各个版本 介绍解决方案使用Fork版本&#xff08;推荐&#xff09;☆☆☆☆☆DCNv2_latest项目&#xff08;不推荐&#xff09; 介绍 原始项目&#xff1a;https://github.com/CharlesShang/DCNv2 注意&#xff1a;原始项目只有低版本的pytorch安装 解决方…

我本地是正常的,线上就有问题?为啥?玄学?

笔者作为研发&#xff0c;细细数来已经搬了多年程序的砖了&#xff0c;也带了不少新人&#xff0c;发现好多新人都有如题的提问。这里珍重申明我并不是歧视新人哈&#xff0c;只是想根据老程序猿搬砖的经验&#xff0c;分享一下问题排查经验。或许对焦头烂额的你会有那么一点点…

变电站蓄电池在线监测系统(论文+源码)

1. 系统设计 本次课题为变电站蓄电池在线监测系统的设计&#xff0c;其系统架构如图3.1所示&#xff0c;包括了主控制器STC89C52单片机&#xff0c;液晶显示器LCD1602,模数转换器ADC0832&#xff0c;电流传感器ACS712&#xff0c;分压电阻&#xff0c;蜂鸣器以及温度传感器。在…

LeeCode前端算法基础100题(8)-买卖股票的最佳时机 III

一、问题详情: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入:prices = [3,3,5,0,0,3,1,…

​LeetCode解法汇总2697. 字典序最小回文串

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你一个由…

JAVA 版多商家入驻 直播带货 商城系统 B2B2C 之 鸿鹄云商B2B2C产品概述

随着互联网的快速发展&#xff0c;越来越多的企业开始注重数字化转型&#xff0c;以提升自身的竞争力和运营效率。在这个背景下&#xff0c;鸿鹄云商SAAS云产品应运而生&#xff0c;为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

总结一篇本地idea配合阿里云服务器使用docker

idea打包打镜像发到阿里云服务器 为什么写这篇文章呢&#xff0c;就是这一整套流程我在网上没有看到完整的&#xff0c;有完整的也是要收费才能看&#xff0c;所以自己摸索了&#xff0c;自己踩过坑&#xff0c;想让兄弟们不仅能白嫖&#xff0c;还不踩坑&#xff01; 先说一…

C++ 运算符重载 (备查)

基础 运算符重载&#xff0c;就是对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型。 运算符重载也可以发生函数重载。 语法&#xff1a; void operator(); //代表了被重载的运算符。函数的参数个数取决于两个因素。1)运算符是一元(一…

数据结构和算法-图的基本操作以图的广度优先遍历和深度优先遍历

文章目录 图的基本操作总览找边列出与某顶点相连的边插入顶点删除顶点增加边顶点的第一个邻接点顶点的下一个邻接点设置或者获取某条边的权值总览 图的广度优先遍历总览树的广度优先遍历图的广度优先遍历树vs图图广度优先遍历的代码实现广度优先遍历序列遍历序列的可变性算法存…

深眸科技|轻辙视觉引擎以99.9%视觉检测能力为基准,赋能木材加工

轻辙视觉引擎&#xff1a;轻辙视觉引擎是以低代码为基础&#xff0c;深度学习技术为核心的视觉业务流程编排引擎&#xff0c;用于快速搭建部署复杂视觉检测流程软件方案。 轻辙视觉引擎&#xff5c;轻量级产品实现高效应用 作为深眸科技的核心产品之一&#xff0c;轻辙视觉引…

十进制整数转二进制数

十进制整数转二进制数 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 函 数 名&#xff1a;dec_2_bin % 功 能&#xff1a;十进制整数转二进制数 % 输入参数&#xff1a; % % 1.参数dec&#xff1a;十进制数 % % 2.参数width&#xff1a;用多少位宽表示二进制…

论文润色突显研究亮点 papergpt

大家好&#xff0c;今天来聊聊论文润色突显研究亮点&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 标题&#xff1a;论文润色突显研究亮点――提升论文吸引力的关键步骤 一、引言 在学术研究中&#x…

【算法刷题】Day15

文章目录 1. 串联所有单词的子串题干&#xff1a;算法原理代码&#xff1a; 2. 最小覆盖子串题干&#xff1a;算法原理&#xff1a;1、暴力枚举 哈希表2、滑动窗口 哈希表 代码&#xff1a; 1. 串联所有单词的子串 原题链接 题干&#xff1a; 给定⼀个字符串 s 和⼀个字符串…

Vue项目使用WebAssembly之后,Nginx如何解决WebAssembly不支持的问题

在VUE项目中使用WebAssembly之后&#xff0c;打包的项目会出现下面的错误 Uncaught (in promise) TypeError: WebAssembly: Response has unsupported MIME type application/wasm; charsetutf-8 expected application/wasm 可以用以下办法解决 一&#xff1a;单独Nginx配置…

选择排序-排序算法

思路 选择排序&#xff08;Selection sort&#xff09;的主要思路是&#xff1a;在要排序的区间内找到一个最大的元素&#xff0c;将它放到数组的最后一个位置&#xff0c;然后在剩余的未排序区间内找到一个最大的元素&#xff0c;将它放到数组的倒数第二个位置。以此类推&…