我有n个排序不同大小的数组。给K我需要找到前k个最小的数字。
int a [] = {10,20,30,40};
int b [] = {20,30,40};
int c [] = { - 10,0};
从n个排序数组中找出k个最小数字
如果k = 1,那么输出应该是数组= {-10},k = 2然后op = {-10,0} k = 4 {-10,0,10,20,20}
想法,我认为的:
1.保持最小堆,但我需要扫描所有剩余的阵列中的所有元素?
2.保持大小为K的运算数组,然后扫描所有的阵列中的所有元素,除非我们阵中的“OP”比最大遇到的元素更大
有什么办法如果我开始从列在想什么?
约束条件:合并所有数组并找到第一个k并不好,因为数组的大小可能很大,就像单个数组中的百万个整数一样。
新增的约束部分。 – mcmattu
我在添加约束后修改了我的回复;只是抬起头来。 –