当前位置: 首页 > news >正文

leetcode 148. 排序链表 java解法

Problem: 148. 排序链表

思路

这是一个链表排序的问题,由于要求时间复杂度为 O(nlogn),适合使用归并排序(Merge Sort)来解决。

解题方法

  1. 首先,使用快慢指针找到链表的中间节点,将链表分成两部分。
  2. 然后,递归地对两个子链表进行排序。
  3. 最后,合并两个有序的子链表。

复杂度

时间复杂度: O(nlogn)
空间复杂度: O(logn)(递归调用栈的深度)

Code

/*** 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) {if(head == null || head.next == null) {return head;}ListNode slow = head;ListNode fast = head;while(fast.next != null && fast.next.next != null) {slow= slow.next;fast = fast.next.next;}ListNode mid = slow.next;slow.next = null;ListNode left = sortList(head);ListNode right = sortList(mid);return mergeList(left, right);}private ListNode mergeList(ListNode left, ListNode right) {ListNode dummyHead = new ListNode(-1);ListNode cur = dummyHead;while(left != null && right != null) {if(left.val < right.val) {cur.next = left;left = left.next;}else{cur.next = right;right = right.next;}cur = cur.next;}if(left == null) {cur.next = right;}if(right == null) {cur.next = left;}return dummyHead.next;}
}
http://www.lryc.cn/news/302746.html

相关文章:

  • 【MATLAB源码-第140期】基于matlab的深度学习的两用户NOMA-OFDM系统信道估计仿真,对比LS,MMSE,ML。
  • 运动重定向学习笔记
  • 导出Excel,支持最佳
  • 【WPF】获取父控件数据
  • 解决Edge浏览器,微博无法查看大图(Edge Image Viewer)
  • PMP含金量在国内怎么样?
  • java中容易被忽视的toString()方法
  • 如何使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问
  • java面试题之redis篇
  • effective c++ 笔记 条款18-25
  • Nginx学习笔记
  • 摆(行列式、杜教筛)
  • 尝试以语法对照表格形式学习新语言:c,rust
  • 408计算机网络--基础概论
  • 数据库应用:kylin 部署 达梦数据库DM8
  • GO框架基础 (二)、sqlx库
  • Expected class selector “.menuChildMall“ to be kebab-case报错原因
  • NC文件不规则裁剪(利用shp文件裁剪)(三)
  • java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目
  • 三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型
  • 【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
  • 【Docker】Docker存储卷
  • 基于python的租车管理平台/汽车租赁网站
  • 【JVM】双亲委派机制
  • 分布式id实战
  • 深入了解 SOCKS5 代理、代理 IP 和 HTTP
  • 外包干了3个多月,技术退步明显。。。。
  • Unity之闪电侠大战蓝毒兽(简陋的战斗系统)
  • C# 菜鸟级别有关于redis的使用
  • AlexNet的出现推动深度学习的巨大发展