我有 n 个不同大小的排序数组。给 K i 需要找到前 k 个最小的数。
int a[] = {10,20,30,40};
诠释 b[]= {20,30,40};
诠释 c[] ={-10,0};
如果 k = 1 那么输出应该是一个数组 = {-10}, k=2 然后 op= {-10,0} k = 4 {-10,0,10,20,20}
我想到的想法:
1.维护一个最小堆,但是我需要扫描所有剩余数组的所有元素吗?
2. 维护 op 大小为 K 的数组,然后扫描所有数组的所有元素,除非我们在数组 "op" 中遇到大于 max 的元素
如果我从专栏开始思考,有什么办法吗?
约束:合并所有数组并找到第一个 k 并不好,因为数组的大小可能很大,就像单个数组中的数百万个整数一样。