leetcode148-Sort List

题目

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
示例 1:
输入:head = [4,2,1,3]
输出:[1,2,3,4]

分析

这道题目的思路也比较明确,我们可以用递归排序的思路,先不断拆分链表直到只剩下一个结点,然后再合并俩个有序列表。拆分链表可以用快慢指针的方法

public class LinkNode {int val;LinkNode next;public LinkNode(int data) {this.val = data;this.next = null;}
}
public class LinkList {LinkNode head;public LinkList() {this.head = null;}public LinkNode getHead() {return this.head;}//添加元素public void addNode(int data) {LinkNode node = new LinkNode(data);if (this.head == null) {this.head = node;} else {LinkNode cur = this.head;while(cur.next != null) {cur = cur.next;}cur.next = node;}}//正序打印public void print(LinkNode node) {while(node != null) {System.out.print(node.val);System.out.print(" ");node = node.next;}System.out.println();}public LinkNode sort(LinkNode head) {if(head == null || head.next == null) {return head;}LinkNode fast = head;LinkNode slow = head;LinkNode pre = null;while(fast != null && fast.next != null) {pre = slow;slow = slow.next;fast = fast.next.next;}pre.next = null;return merge(sort(slow),sort(head));}public LinkNode merge(LinkNode slow,LinkNode fast) {LinkNode dummy = new LinkNode(0);LinkNode p = dummy;while(slow != null && fast != null) {if(slow.val < fast.val) {p.next = slow;p = p.next;slow = slow.next;} else {p.next = fast;p = p.next;fast = fast.next;}}while(slow != null) {p.next = slow;p = p.next;slow = slow.next;}while(fast != null) {p.next = fast;p = p.next;fast = fast.next;}return dummy.next;}
}
public class sortList {public static void main(String[] args) {LinkList list = new LinkList();list.addNode(-1);list.addNode(5);list.addNode(3);list.addNode(4);list.addNode(0);LinkNode head = list.sort(list.getHead());list.print(head);}
}

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

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

相关文章

C++三剑客之std::any(二) : 源码剖析

目录 1.引言 2.std::any的存储分析 3._Any_big_RTTI与_Any_small_RTTI 4.std::any的构造函数 4.1.从std::any构造 4.2.可变参数模板构造函数 4.3.赋值构造与emplace函数 5.reset函数 6._Cast函数 7.make_any模版函数 8.std::any_cast函数 9.总结 1.引言 C三剑客之s…

C#如何在异步任务中调用及取消一个长时间运行的同步方法

在.Net和C#中运行异步代码相当简单&#xff0c;因为我们有时候需要取消正在进行的异步操作&#xff0c;通过本文&#xff0c;可以掌握 通过CancellationToken取消任务&#xff08;包括non-cancellable任务&#xff09; using System.Diagnostics;Console.WriteLine("Hell…

网络编程-day5

IO复用select实现TCP服务端 #define IP "192.168.125.196" #define PORT 8888 int main(int argc, const char *argv[]) {int sfd socket(AF_INET, SOCK_STREAM, 0);if(sfd -1){perror("socket");return -1;}int reuse 1;if(setsockopt(sfd, SOL_SOCKE…

外汇天眼:外汇干预是什么? 谁来做? 怎么做?

日元兑美元汇率持续下跌&#xff0c;市场对外汇干预的警惕性提高。 如果日本政府和日本银行&#xff08;央行&#xff09;进行外汇干预&#xff0c;会是大约1年半以来首次。 日本2022年曾进行过3次干预。 外汇干预由谁来进行&#xff0c;目的是什么&#xff0c;又采取了什么具体…

工况数据导入MATLAB及数据复用

01--数据导入 之前在Matlab/Simulink的一些功能用法笔记&#xff08;二&#xff09;中有介绍过数据的导入到MATLAB工作区间 本次主要是想介绍下数据的复用 我们以NEDC工况数据为例&#xff1a; 通过下列3种方法进行导入&#xff1a; 1.通过导入Excel表数据&#xff0c;使用F…

Date、LocalDateTime、时间戳、日期字符串互转

前言 由于历史原因&#xff0c;项目上使用Date、LocalDateTime、时间戳甚至日期字符串的情况五花八门&#xff0c;在每次参数传递的时候&#xff0c;遇到类型不一致的时候就会很痛苦&#xff0c;接下来就总结下这些类之间到底怎样互转。 1 From Date Date作为老牌的日期处理…

番外篇 | YOLOv5更换主干网络之Conformer:首个CNN + Transformer的backbone模型

前言:Hello大家好,我是小哥谈。Transformer和CNN在处理视觉表征方面都有着各自的优势以及一些不可避免的问题。因此,国科大、鹏城实验室和华为研究人员首次将二者进行了融合并提出全新的Conformer模型,其可以在不显著增加计算量的前提下显著提升了基网表征能力。论文已被IC…

Jenkins部署成功后自动发通知到钉钉群

钉钉上如何配置 选择钉钉群&#xff0c;找到群设置-机器人-添加机器人 选择自定义 选择【添加】 选择【加签】&#xff0c;复制值&#xff0c;后续在jenkins里配置时会用到 复制Webhook地址&#xff0c;后面在jenkins里配置的时候要用到 Jenkins上如何配置 系统管理-插件管…

“Excel+中文编程”衍生新型软件,WPS用户:自家孩子

你知道吗&#xff0c;我们中国人有时候真的挺有创新精神的。 你可能熟悉Excel表格&#xff0c;也可能听说过中文编程&#xff0c;但你有没有脑洞大开&#xff0c;想过如果把这两者结合起来&#xff0c;会碰撞出什么样的火花呢&#xff1f; 别不信&#xff0c;跟着我来看看吧&a…

云WAF:网络安全的未来之选

在数字化时代&#xff0c;网络安全面临着前所未有的挑战。云WAF&#xff08;Web Application Firewall&#xff09;作为一种创新的网络安全解决方案&#xff0c;正以其独特的优势引领网络安全的新潮流。云WAF&#xff08;Web Application Firewall&#xff09;作为保护Web应用安…

flutter出现kotlin版本问题解决办法

.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1. 在android的settings.gradle下 plugins {id "dev.flutter.flutter-gradle-plugin" version "1.0.0…

几个速度比较快的 Linux 开源镜像站

搜狐开源镜像站 https://mirrors.sohu.com/ File Name CPAN/ FreeBSD/ QpenBSD/ RockyL apache/ archlinux/ centos/ ceph/ cygwin/ debian/ debian–cd/ debian-security/ deepin/ deepin-cd/ docker-ce/ fedora/ fedora-epel/ gentoo/ lib/ mysql/ nginx/ opensuse/ php/ ubu…

计算机视觉中-语义分割

语义分割 语义分割是计算机视觉中的一个关键技术&#xff0c;它涉及对图像中的每个像素进行类别划分&#xff0c;从而识别出图像中的不同物体或区域。具体来说&#xff0c;语义分割就是按照“语义”给图像上目标类别中的每一点打上一个标签&#xff0c;使得不同种类的东西在图像…

力扣-LCR 169. 招式拆解 II

文章目录 力扣题目代码 力扣题目 某套连招动作记作仅由小写字母组成的序列 arr&#xff0c;其中 arr[i] 第 i 个招式的名字。请返回第一个只出现一次的招式名称&#xff0c;如不存在请返回空格。 示例 1&#xff1a; 输入&#xff1a;arr “abbccdeff” 输出&#xff1a;‘…

EI会议的投稿流程是什么?

EI会议是工程技术领域的学术会议&#xff0c;为研究人员提供展示研究成果、交流学术观点的平台。下面是EI会议投稿的详细流程&#xff1a; EI会议论文的投稿流程是什么&#xff1f; 确定会议信息&#xff1a; 首先&#xff0c;确定你感兴趣的EI会议的相关信息&#xff0c;包括…

数据结构:树(3)【二叉树链式结构实现】【二叉树的前序,中序,后序遍历】【求二叉树全部结点个数】【求二叉树叶子结点个数】【求二叉树的深度】【单值二叉树】

一.二叉树链式结构的实现 二叉树的链式结构的实现相对于顺序结构的实现就没有那么多的讲究了。就是普通的链表&#xff0c;只不过多了一个指向的指针。 具体结构如下&#xff1a; typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTre…

消息号 KI261 成本中心 XXXX/123123 冻结而不能直接对 2020.10.08 收入记帐

做AR凭证遇到如上图所示的报错&#xff0c;检查之后发现是科目的成本要素类别与成本中心的控制面板-锁定中的类型不匹配&#xff0c;现在科目的成本要素类别是11&#xff0c;控制面板中锁定了“实际销售收入”与“计划收入”。 成本要素类别“11”代表主营收入或者库存收入&…

WEB攻防【1】——ASP应用/HTTP.SYS/短文件/文件解析/Access注入/数据库泄漏

#知识点&#xff1a; 1、ASP-SQL注入-Access数据库 2、ASP-默认安装-数据库泄漏下载 3、ASP-IIS-CVE&短文件&解析&写入 windows iis asp access &#xff08;sqlsever&#xff09; 常见组合&#xff1a;winiisaspaccess php一般是和mysql搭配 access 数据库 一…

SQL刷题笔记day1

1题目 我的代码&#xff1a; select * from employees order by hire_date desc limit 2,1 标准代码&#xff1a; select * from employees where hire_date (select distinct hire_date from employees order by hire_date desc limit 2,1) 复盘&#xff1a;因为按照入…

[Java]Java后端程序员开发经常使用的方法函数(持续更新)

文章目录 简述数据库&#xff08;MySQL&#xff09;查询所有字段查询所有字段并逗号隔开&#xff08;id,name.code&#xff09;增加或者减少指定的天数查询指定年份的数据数据库表新增信息用 EXISTS 或 NOT EXISTS 代替 IN 或 NOT IN7位设备编码补零生成查询相同id下&#xff0…