• 23. Merge k Sorted Lists


    一、题目

      1、审题

        

      2、分析

        将 n 个有序链表合并成为一个有序链表。

    二、解答

      1、思路:

      Java 有一个 PriorityQueue,该队列能够将放入的对象进行排序。故将所有非空队头元素放入该队列,取出一个元素后,再放入所取出元素指向的下一个非空结点;当队列中元素为空时,取出的顺序即为排序后的新的链表的元素顺序。

      有关 PriorityQueue:

        add(E e)    添加元素
        clear() 清空
        contains(Object o) 检查是否包含当前参数元素
        offer(E e) 添加元素
        peek() 读取元素,(不删除)
        poll() 取出元素,(删除)
        remove(Object o) 删除指定元素
        size() 返回长度
      
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode mergeKLists(ListNode[] lists) {
    
            if(lists == null || lists.length == 0)
                return null;
    
            /*
             *  PriorityQueue:    自动根据优先级排序的队列
             */
            PriorityQueue<ListNode> heap = new PriorityQueue<ListNode>(10, new Comparator<ListNode>() {
                @Override
                public int compare(ListNode o1, ListNode o2) {
                    return o1.val - o2.val;
                }
            });
    
            for (int i = 0; i < lists.length; i++)
                if(lists[i] != null)
                    heap.offer(lists[i]);   // add
    
            ListNode head = null;
            ListNode pre = head;
            while(heap.size() > 0) {
                ListNode cur = heap.poll();     // 取出,删除
                if(head == null)
                    head = cur;
                else
                    pre.next = cur;
    
                pre = cur;
                if(cur.next != null)
                    heap.offer(cur.next);   //add
            }
            return  head;
        }
    }
  • 相关阅读:
    寒假刷题之2——Decoder
    寒假刷题之5——竹简文
    一位ACMer的心得,,,
    OD使用教程22 调试篇22
    OD使用教程22 调试篇22
    递归和分治思想4|八皇后问题 数据结构和算法34
    递归和分治思想4|八皇后问题 数据结构和算法34
    字符串 数据结构和算法35
    KMP算法(养成篇) 数据结构和算法36
    OD使用教程23 调试篇23
  • 原文地址:https://www.cnblogs.com/skillking/p/9417428.html
Copyright © 2020-2023  润新知