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

面试热题(合并K个升序链表)

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

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

输入: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

       这道题看似困难题,其实还是比较容易好想的,我们可以维护一个优先最小队列,然后声明一个虚拟头结点,每次出一个最小的节点挂载在已经挂载节点的后面,当队列为空时,就说明我们K个升序列表已经合并完成

 

public ListNode mergeKLists(ListNode[] lists) {if(lists==null||lists.length==0){return null;}//自定义比较器PriorityQueue<ListNode> queue=new PriorityQueue<>(new Comparator<ListNode>() {@Overridepublic int compare(ListNode o1, ListNode o2) {return o1.val-o2.val;}});//将K个节点的头结点入队for(ListNode node:lists){if(node!=null){queue.offer(node);}}//创建一个虚拟头结点ListNode dummyNode=new ListNode(-1);ListNode curNode=dummyNode;while(!queue.isEmpty()){ListNode cur=queue.poll();curNode.next=cur;//更新curNodecurNode=curNode.next;//如果当前节点的next不为空,则让下一个节点进行入队if(cur.next!=null){queue.offer(cur.next);}}return dummyNode.next;}

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

相关文章:

  • 优化过多if else判断代码
  • 最强自动化测试框架Playwright (27)-跟踪查看器
  • 【工作中问题解决实践 十一】Kafka消费者消费堆积且频繁rebalance
  • ChatGpt提示词大全
  • 利用SimpleDateFormat或者LocalDateTime生成格式为“yyyy-MM-dd HH:mm:ss“的当前时间
  • 使用 Postman 批量发送请求的最佳实践
  • Docker一键部署项目,无需登录XShell
  • GIt Squash 多个提交压缩提交
  • 【数据结构】栈与队列
  • 突然让做性能测试?试试RunnerGo
  • (7)(7.4) 集结航点
  • 基于kubeadm部署K8S集群:上篇
  • 机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
  • 学生成绩管理系统V1.0
  • 嵌入式:ARM Day1
  • Android 网络协议与网络编程
  • 【讯飞星火认知大模型】大模型之星火手机助理
  • centos中的swap.img可以删除吗
  • Java多线程编程中的线程死锁
  • 在浏览器中使用javascript打印HTML中指定Div带背景图片内容生成PDF电子证书查询的解决方案
  • 【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景
  • 污水处理厂人员定位方案介绍
  • 约数个数(质因子分解)
  • 【QT】 QSS样式表设计一文了解
  • 9-AJAX-1入门
  • ssh免密登录
  • 全球公链周进展-2023/8/14
  • python装饰器详解,python装饰器笔记心得
  • 【C语言】每日一题(寻找数组的中心下标)
  • centos 安装 nginx配置ssl 和 获取用户真实ip