Java实现-合并k个排序链表

来源:互联网 发布:淘宝店铺装修模版 编辑:程序博客网 时间:2024/06/13 04:43

合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。

样例

给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null

/** * Definition for ListNode. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int val) { *         this.val = val; *         this.next = null; *     } * } */ public class Solution {    /**     * @param lists: a list of ListNode     * @return: The head of one sorted list.     */      private static Comparator<ListNode>  comp =new Comparator<ListNode>() {@Overridepublic int compare(ListNode o1, ListNode o2) {// TODO Auto-generated method stubreturn o1.val-o2.val;}};public static ListNode mergeKLists(List<ListNode> lists){if(lists.size()==0||lists==null){return null;}PriorityQueue<ListNode> queue=new PriorityQueue<ListNode>(lists.size(),comp);for(int i=0;i<lists.size();i++){ListNode node=lists.get(i);while(node!=null){ListNode temp=node;node=node.next;temp.next=null;queue.add(temp);}}ListNode result=new ListNode(-1);ListNode t=result;while(!queue.isEmpty()){t.next=queue.poll();t=t.next;}return result.next;}}


原创粉丝点击