2021-07-20:最小区间。你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。我们定义如果 b-a < d-c 或者在 b-a ==
2021-07-20:最小区间。你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。

福大大 答案2021-07-20:
[[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]
有序表:0,4,5。序号: 1,1,1。有序表差值为5。
有序表:4,5,9。序号:1,2,1。有序表差值为5。
有序表:5,9,10。序号:2,2,1。有序表差值为5。
有序表:9,10,18。序号:2,2,2。有序表差值为9。
有序表:10,12,18。序号:2,3,2。有序表差值为8。
有序表:12,15,18。序号:3,3,2。有序表差值为6。
有序表:15,18,20。序号:3,4,2。有序表差值为5。
有序表:18,20,24。序号:4,4,2。有序表差值为6。
有序表:20,22,24。序号:4,4,3。有序表差值为4。差值最小,这个就是需要的返回值。
有序表:x,22,24。序号:5,4,3。结束了。
代码用golang编写。代码如下:
package main
import (
"fmt"
"sort"
)
func main() {
nums := [][]int{{4, 10, 15, 24, 26}, {0, 9, 12, 20}, {5, 18, 22, 30}}
ret := smallestRange(nums)
fmt.Println(ret)
}
type Node struct {
value int
arrid int
index int
}
func smallestRange(nums [][]int) []int {
N := len(nums)
orderSet := make([]*Node, 0)
for i := 0; i < N; i++ {
orderSet = append(orderSet, &Node{nums[i][0], i, 0})
}
set := false
a := 0
b := 0
for len(orderSet) == N {
sort.Slice(orderSet, func(i, j int) bool {
if orderSet[i].value != orderSet[j].value {
return orderSet[i].value < orderSet[j].value
} else {
return orderSet[i].arrid < orderSet[j].arrid
}
})
min := orderSet[0]
max := orderSet[len(orderSet)-1]
if !set || (max.value-min.value < b-a) {
set = true
a = min.value
b = max.value
}
min = orderSet[0]
orderSet = orderSet[1:]
arrid := min.arrid
index := min.index + 1
if index != len(nums[arrid]) {
orderSet = append(orderSet, &Node{nums[arrid][index], arrid, index})
}
}
return []int{a, b}
}
执行结果如下:

2021-07-20:最小区间。你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。我们定义如果 b-a < d-c 或者在 b-a ==的更多相关文章
- 2021.07.20 CF1477A Nezzar and Board(最大公因数,未证)
2021.07.20 CF1477A Nezzar and Board(最大公因数,未证) CF1477A Nezzar and Board - 洛谷 | 计算机科学教育新生态 (luogu.com. ...
- 2021.07.20 P3951 小凯的疑惑(最大公因数,未证)
2021.07.20 P3951 小凯的疑惑(最大公因数,未证) 重点: 1.最大公因数 题意: 求ax+by最大的表示不了的数(a,b给定 x,y非负). 分析: 不会.--2021.07.20 代 ...
- 转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中
转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比 ...
- 2021.07.17 P4170 染色(区间DP)
2021.07.17 P4170 染色(区间DP) [P4170 CQOI2007]涂色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.目标状态可以由哪些状态转移过来. ...
- hdu6003 Problem Buyer 贪心 给定n个区间,以及m个数,求从n个区间中任意选k个区间,满足m个数都能在k个区间中找到一个包含它的区间,如果一个区间包含了x,那么 该区间不能再去包含另一个数,即k>=m。求最小的k。如果不存在这样的k,输出“IMPOSSIBLE!”。
/** 题目:hdu6003 Problem Buyer 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6003 题意:给定n个区间,以及m个数,求从n个区 ...
- [LeetCode] 632. Smallest Range Covering Elements from K Lists 覆盖K个列表元素的最小区间
You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...
- 2021.07.09 K-D树
2021.07.09 K-D树 前置知识 1.二叉搜索树 2.总是很长的替罪羊树 K-D树 建树 K-D树具有二叉搜索树的形态,对于每一个分类标准,小于标准的节点在父节点左边,大于标准的节点在父节点右 ...
- 2021.07.23 P3275 糖果(差分约束)
2021.07.23 P3275 糖果(差分约束) [P3275 SCOI2011]糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.为了满足更多更多约束条件,合适地 ...
- Noip模拟21(持续翻车)2021.7.20
读题总是读错是不是没救了... T1 Median 中位数:按顺序排列的一组数据中居于中间位置的数. 能用上的高亮符号都用上了... 当时忘了就离谱.... 理解什么是中位数(真是个憨憨)后就可以开始 ...
- [火星补锅] 非确定性有穷状态决策自动机练习题Vol.1 T3 第K大区间 题解
前言: 老火星人了 解析: 很妙的二分题.如果没想到二分答案.. 很容易想到尝试用双指针扫一下,看看能不能统计答案. 首先,tail指针右移时很好处理,因为tail指针右移对区间最大值的影响之可能作用 ...
随机推荐
- GUI编程实战--贪吃蛇
GUI编程实战--贪吃蛇 参考:遇见狂神说 https://space.bilibili.com/95256449 界面绘制 帧:如果时间片足够小,就是动画,一秒30帧.连起来是动画,拆开是静态的图片 ...
- Synchronized 关键字详解
更多内容,前往 IT-BLOG Synchronized原理分析 加锁和释放锁的原理 深入JVM看字节码,创建如下的代码: 1 public class SynchronizedDemo2 { 2 O ...
- 修改host文件
host文件路径 Windows 系统:C:\Windows\System32\drivers\etc\hosts Linux 系统:/etc/hosts Mac(苹果电脑)系统:/etc/hosts ...
- Windows下解决python pip命令下载慢的方法(超简单)
首先,常用的国内镜像: 1 https://pypi.tuna.tsinghua.edu.cn/simple/ 清华大学(推荐) 2 http://pypi.douban.com/simple/ 豆瓣 ...
- 使用dataX收获的教训
首先是安装dataX,安装非常简单,只需下载对应的压缩包即可. 下载地址:https://github.com/alibaba/DataX 首先我出现的第一个错误:命令提示符界面出现出现乱码. 解决方 ...
- 通过Navicat导入SQLServer的MDF文件和LDF文件
新建查询运行: EXEC sp_attach_db @dbname = '你的数据库名', @filename1 = 'mdf文件路径(包缀名)', @filename ...
- [CTF]Caser-Pass-Tool1-C++工具
刷pico遇到一个凯撒密码加密题,顺手写了个解密工具,但是暂时没有解决到边界字母的升降档问题 #include<iostream> using namespace std; int mai ...
- JVM的垃圾收集算法
介绍分代收集理论和几种垃圾收集算法的思想及其发展过程. 分代收集理论 当前商业虚拟机的垃圾收集器,大多数都遵循了 "分代收集"(Generational Collection)的理 ...
- python入门教程之二十四Python MySQL - mysql-connector 驱动
MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读我们的 MySQL 教程. 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql ...
- [Linux]常用命令之【hostname】
1: 个人的片面理解: hostname是主机名(的"昵称"),而非域名.一般设置hostname,来标识当前机器的主要用途.以区别与其它机器 2: hostname的严格定义: ...