zoukankan      html  css  js  c++  java
  • 最小区间使得至少包含每组元素中的一个

    问题描述:

    You have k lists of sorted integers. Find the smallest range that includes at least one number from each of the k lists.
    For example,
    List 1: [4, 10, 15, 24, 26]
    List 2: [0, 9, 12, 20]
    List 3: [5, 18, 22, 30]
    The smallest range here would be [20, 24] as it contains 24 from list 1, 20 from list 2, and 22 from list 3.

    问题解答:

    建立大小为k的最小堆,堆的每个元素都来自不同的组。统计堆中的最大元素已经最小元素,计算区间跨度值。每次删除堆顶元素,然后将该元素所在的那个组下一个元素加入堆中。再次计算跨度。循环直到有一个组没有元素可以加入堆了,即为空。

    算法很巧妙,正确性也是很容易证明滴,哈哈,该睡觉了。晚安

  • 相关阅读:
    浅谈Charles —— 青花瓷
    jdbc
    装饰者模式
    java可变参数
    简单日历
    DVD管理系统
    图片拷贝
    时间输出
    java基础小知识
    jQuery HTML
  • 原文地址:https://www.cnblogs.com/xubenben/p/3398400.html
Copyright © 2011-2022 走看看