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

【算法】合并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 = []
输出:[]

示例 3:

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

提示:

  • k == lists.length
  • 0 <= k <= 10^4
  • 0 <= lists[i].length <= 500
  • -10^4 <= lists[i][j] <= 10^4
  • lists[i] 按 升序 排列
  • lists[i].length 的总和不超过 10^4

解题:

 // 最小堆 public static ListNode mergeKLists(ListNode[] lists) {int k = lists.length;ListNode dummyHead = new ListNode(0);ListNode tail = dummyHead;while (true) {ListNode minNode = null;int minPointer = -1;for (int i = 0; i < k; i++) {if (lists[i] == null) {continue;}if (minNode == null || lists[i].val < minNode.val) {minNode = lists[i];minPointer = i;}}if (minPointer == -1) {break;}tail.next = minNode;tail = tail.next;lists[minPointer] = lists[minPointer].next;}return dummyHead.next;}public static void main(String[] args) {Solution solution = new Solution();ListNode[] lists = new ListNode[]{new ListNode(1, new ListNode(4, new ListNode(5))),new ListNode(1, new ListNode(3, new ListNode(4))),new ListNode(2, new ListNode(6))};ListNode list = solution.mergeKLists(lists);ListNode.print(list);}

http://www.lryc.cn/news/250578.html

相关文章:

  • 持续集成交付CICD:GitLab Webhook触发Jenkins流水线
  • 计算机网络测试题
  • vscode如何在没有网络的情况下安装插件
  • 自定义类型:结构体、联合、枚举
  • HelpLook可以作为wordpress的替代品,帮助企业快速搭建博客
  • 单片机实现数码管动态显示
  • jbrowse基因组浏览器部署
  • 神经网络 模型表示(一)
  • 【漏洞复现】智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC
  • 【matlab程序】画海洋流场
  • 线性表 力扣67. 二进制求和
  • 2312skia,13画布包入门
  • 【网络安全技术】消息认证技术
  • 智慧安防三大信息技术:云计算、大数据及人工智能在视频监控EasyCVR中的应用
  • 接口测试基础知识
  • C++多线程之通过成员函数作为线程入口
  • word、excel文件转PDF(documents4j方式,简单)
  • 【Linux】:信号(三)捕捉
  • 数据结构 / 队列 / 循环队列 / 概念
  • elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内闭坑指南)
  • vue中中的动画组件使用及如何在vue中使用animate.css
  • MATLAB 模型参考自适应控制 - Model Reference Adaptive Control
  • 【如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程】
  • 大模型的实践应用11-“书生”通用大模型的搭建与模型代码详细介绍,以及快速使用方法
  • 【开发PaaS】基于Postgresql的开发平台Supabase
  • 前端开启gzip优化页面加载速度
  • 用Java写一个俄罗斯方块
  • 应用于智慧金融的AI边缘计算盒子+AI算法软硬一体化方案
  • 目标检测——Faster R-CNN算法解读
  • Wireshark (一)安装入门 —— 软件介绍