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

148. 排序链表

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

示例1:
在这里插入图片描述
解题思路:
这道题是一道综合题,考察了链表中间节点+合并有序链表。首先我们链表中间节点,然后从中间结点的前一个节点处断开,分为两段链表。
然后对这两段更短的链表分别调用sortList,得到两段有序的链表。
最后合并这两段有序链表并返回结果。
详细题解可参见https://leetcode.cn/problems/sort-list/solutions/2993518/liang-chong-fang-fa-fen-zhi-die-dai-mo-k-caei

/*** 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 head2 = middleNode(head);head = sortList(head);head2 = sortList(head2);return mergeTwoList(head, head2);}private ListNode middleNode(ListNode head){ListNode pre = head, slow = head, fast = head;while(fast != null && fast.next != null){pre = slow;slow = slow.next;fast = fast.next.next;}pre.next = null;return slow;}private ListNode mergeTwoList(ListNode head, ListNode head2){ListNode dummy = new ListNode();ListNode cur = dummy;while(head != null && head2 != null){if(head.val <= head2.val){cur.next = head;head = head.next;}else{cur.next = head2;head2 = head2.next;}cur = cur.next;}cur.next = head != null ? head : head2;return dummy.next;}
}
http://www.lryc.cn/news/572018.html

相关文章:

  • 前端开发面试题总结-vue2框架篇(四)
  • Flask视频和图片上传
  • MongoDB学习记录(快速入门)
  • 26.多表查询
  • Vue 二维码组件
  • 02-three.js Transform objects
  • 什么是Gateway
  • 详细讲解Redis为什么被设计成单线程
  • 稀疏大模型架构与训练算法研究
  • 最新期刊影响因子,基本包含全部期刊
  • vue | vue 插件化机制,全局注册 和 局部注册
  • 基于python的web系统界面登录
  • 深入理解mysql索引
  • PHP vs Python (Flask/Django) vs Java (SpringBoot) vs Vue:2024全栈技术终极对决
  • singlefligt使用方法和源码解读
  • MySQL 索引和select优化
  • ​​网络工程师知识点精讲与例题解析:数据链路层技术​​
  • 计算机视觉课程总结
  • 【Node.js 的底层实现机制】从事件驱动到异步 I/O
  • Python Peewee库连接和操作MySQL数据库
  • 条件向量运算与三元表达式
  • C语言——枚举
  • 解决Matplotlib三维图无法旋转的问题
  • AndroidR平台ToastPresenter引出BinderProxy泄漏
  • 实战指南:用DataHub管理Hive元数据
  • SkyWalking 部署与应用(Windows)
  • 7-4 身份证号处理
  • 企业班车出行服务系统的SDK选型、核心功能优化迭代的避坑复盘
  • Android软件适配遥控器需求-案例经验分享
  • WebRTC(六):ICE协议