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

Leetcode top100之链表排序

148. 排序链表 - 力扣(LeetCode)

思路比较巧妙

1.使用快慢指针,找到链表的中间节点

2.断开中间连接,对两端递归排序

3.合并两个链表

有快慢指针的技巧和合并链表的技巧

注意点:

快慢指针起点,slow=head,fast=head.next

链表排序前,注意返回头,排完序后,链表头是变化的

    public ListNode sortList(ListNode head) {if (head == null || head.next == null) {return head;}ListNode mid = getMidNode(head);ListNode temp = mid.next;mid.next = null;ListNode left = sortList(head);ListNode right = sortList(temp);return mergeList(left,right);}private ListNode mergeList(ListNode l1, ListNode l2) {ListNode pre = new ListNode(-1);ListNode now = pre;while (l1 != null && l2 != null) {if (l1.val > l2.val) {now.next = l2;l2 = l2.next;now = now.next;} else {now.next = l1;l1 = l1.next;now = now.next;}}if (l1 != null) {now.next = l1;}if (l2 != null) {now.next = l2;}return pre.next;}private ListNode getMidNode(ListNode head) {ListNode slow= head;ListNode fast = head.next;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;}return slow;}

http://www.xdnf.cn/news/18945.html

相关文章:

  • 【ElasticSearch】json查询语法
  • 美团一面“保持好奇”
  • Spring Boot 项目打包成可执行程序
  • HTML应用指南:利用POST请求获取全国三星门店位置信息
  • Ubuntu安装及配置Git(Ubuntu install and config Git Tools)
  • Next.js 15.5.0:探索 Turbopack Beta、稳定的 Node.js 中间件和 TypeScript 的改进
  • 30.throw抛异常
  • 【图像算法 - 23】工业应用:基于深度学习YOLO12与OpenCV的仪器仪表智能识别系统
  • 【P2P】P2P主要技术及RELAY服务1:python实现
  • Kubernetes 构建高可用、高性能 Redis 集群
  • 线性回归入门:从原理到实战的完整指南
  • k8sday17安全机制
  • 真实应急响应案例记录
  • 一键终结Win更新烦恼!你从未见过如此强大的更新暂停工具!
  • PNP机器人介绍:全球知名具身智能/AI机器人实验室介绍之多伦多大学机器人研究所
  • PC端逆向会用到的常见伪指令
  • 解读 “货位清则标识明,标识明则管理成” 的实践价值
  • 灰狼算法+四模型对比!GWO-CNN-BiLSTM-Attention系列四模型多变量时序预测
  • EasyClick 生成唯一设备码
  • 【CV】图像基本操作——①图像的IO操作
  • XC95144XL-10TQG144I Xilinx XC9500XL 高性能 CPLD
  • 从0到1:用 Qwen3-Coder 和 高德MCP 助力数字文旅建造——国庆山西游
  • 我的小灶坑
  • Web程序设计
  • 《 nmcli网络管理学习》
  • 28 FlashAttention
  • sudo 升级
  • 牛客周赛 Round 106(小苯的方格覆盖/小苯的数字折叠/ 小苯的波浪加密器/小苯的数字变换/小苯的洞数组构造/ 小苯的数组计数)
  • “华生科技杯”2025年全国青少年龙舟锦标赛在海宁举行
  • Linux网络套接字