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

34.合并 K 个升序链表

LCR 078. 合并 K 个升序链表

给定一个链表数组,每个链表都已经按升序排列。

请将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[1->4->5,1->3->4,2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6

示例 2:

输入:lists = []
输出:[]

方法1: 保存val值到ArrayList,并排序。再新建结点存入val

/*** 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 mergeKLists(ListNode[] lists) {// HashMap<Integer, ListNode> map = new HashMap<Integer, ListNode>();ArrayList<Integer> values = new ArrayList<>();for(ListNode head : lists){ListNode tmp = head;while(tmp != null){values.add(tmp.val);tmp = tmp.next;}}Collections.sort(values);// 重建排序后的链表ListNode dummy = new ListNode(); // 哑节点,简化链表操作ListNode tmp = dummy;for (int val : values) {tmp.next = new ListNode(val); // 新建节点,避免原节点指针干扰tmp = tmp.next;}return dummy.next;}
}
View Code

 

方法2:  顺序合并——链表合并思路,逐个将待加入链表合并入 ans  指向的新链表中。

用一个变量 ans 来维护以及合并的链表,第 i 次循环把第 i 个链表和 ans 合并,答案保存到 ans 中。

/*** 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 mergeKLists(ListNode[] lists) {// ListNode ans = new ListNode();      错误写法——>因为 new ListNode();默认初始化值为0ListNode ans = null;for(ListNode head:lists){ans = merge(head, ans);}return ans;}public ListNode merge(ListNode a, ListNode b){if(a == null || b == null) return a = a==null? b:a;ListNode dummy = new ListNode(0);ListNode tmp = dummy;while(a!=null && b!=null){if(a.val <= b.val){tmp.next=a;a=a.next;tmp=tmp.next;}else{tmp.next=b;b=b.next;tmp=tmp.next;}}tmp.next = a==null?b:a;return dummy.next;}
}
View Code

 

http://www.jsqmd.com/news/298941/

相关文章:

  • 网页版射击游戏:无限弹药升级枪械
  • 2026年市面上有名的铝门窗定制选哪家,铝门窗/窗纱一体铝门窗/侧压平移推拉窗/门窗/推拉窗,铝门窗生产厂家排行榜
  • 分布式计算深度解析:从理论到实践的技术探索 - 教程
  • 人格的三重博弈:弗洛伊德人格结构理论解析
  • 全网最全8个一键生成论文工具,专科生轻松搞定毕业论文!
  • linux du command parallel
  • 一个月玩转物联网MQTT(杂记篇一)
  • TB370FU原厂刷机包免费下载_CN_ZUI_15
  • 机器缩容要注意哪些问题
  • web3基础概念与实际意义
  • AT_abc442 - crazy-
  • AT_abc329_f Colored Ball - crazy-
  • 【计算机毕业设计案例】基于springboot的社区居民健康管理系统(程序+文档+讲解+定制)
  • FastAPI系列(09):文件上传
  • 7款AI论文写作工具实测:轻松搞定毕业论文,自动匹配真实参考文献!
  • 【机器学习深度学习】强化学习与监督学习SFT、RL、RLHF、PPO、DPO - 实践
  • 2026年塑石假山修建优质厂家推荐指南
  • 闲置携程任我行礼品卡回收变现,认准京顺回收
  • FastAPI系列(08):form表单数据
  • 富强
  • 多无人机协同侦查、任务分配与智能决策仿真解决方案
  • 民主
  • 2025年度盘点:这些板材货架厂家正在引领市场,驶入式货架/重型模具货架/手摇式板材货架,板材货架厂商口碑推荐
  • 导师严选2026 AI论文工具TOP8:本科生毕业论文全场景测评
  • 面试-Decoder-Only生成模型
  • 【毕业设计】基于springboot的人脸识别员工考勤管理系统(源码+文档+远程调试,全bao定制等)
  • 亲测好用!继续教育TOP8一键生成论文工具测评
  • 改变人生的方式
  • FastAPI系列(07):请求体数据
  • 别只盯着那只“鹦鹉”了!Claude3.7与Sora2才是真正的生产力怪兽