码迷,mamicode.com
首页 > 其他好文 > 详细

合并K个升序链表

时间:2020-09-10 23:18:12      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:lis   ISE   length   表数   col   ext   def   efi   输出   

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

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

示例 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 = [[]]
输出:[]

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode() {}
 7  *     ListNode(int val) { this.val = val; }
 8  *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 9  * }
10  */
11 class Solution {
12     public ListNode mergeKLists(ListNode[] lists) {
13         if(lists == null || lists.length == 0){
14             return new ListNode(0).next;
15         }
16 
17         PriorityQueue<ListNode> queue = new PriorityQueue<>(new Comparator<ListNode>(){
18             public int compare(ListNode node1,ListNode node2){
19                 if(node1.val < node2.val) return -1;
20                 else if(node1.val == node2.val) return 0;
21                 else return 1;
22             }
23         });
24 
25         for(ListNode list : lists){
26             if(list!=null){
27                 queue.add(list);
28             }
29         }
30 
31         ListNode head = new ListNode(0);
32         ListNode temp = head;
33         while(!queue.isEmpty()){
34             head.next = queue.poll();
35             head=head.next;
36             if(head.next!=null){
37                 queue.add(head.next);
38             }
39         }
40         return temp.next;
41     }
42 }

 

 

合并K个升序链表

标签:lis   ISE   length   表数   col   ext   def   efi   输出   

原文地址:https://www.cnblogs.com/0error0warning/p/13585481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!