0
点赞
收藏
分享

微信扫一扫

合并K个升序链表(leetcode第23题)

yellowone 2022-01-23 阅读 47

非最优解

class Solution {

    public ListNode mergeKLists(ListNode[] lists) {

         //创建优先队列

       PriorityQueue<Integer> heap =  new PriorityQueue();

        //遍历每一个链表  获取链表中的每一个值,加入优先队列 形成小根堆

       for(int i =0; i<lists.length;i++){

           ListNode node = lists[i];

            while(node!=null){

                heap.offer(node.val);

                node=node.next;

            }

       }

        //创建返回链表

       ListNode result = new ListNode(0);

        创建移动节点

       ListNode head=  result;

       while(heap.size()>0){

                //从小根堆取出值 创建成一个节点

            ListNode nextNode = new ListNode(heap.poll());

                //让每一个节点的next指针指向创建的节点

            head.next = nextNode;

               //head节点变成刚刚创建的节点

            head = head.next;

       }

        //返回结果

       return result.next;

    }

}

举报

相关推荐

0 条评论