s******n 发帖数: 3946 | 1 停好的题目练手:数组a大小m,数组b大小n,两个数组从大到小排序。求第kth大的sum(a[i],a[j]),0
15, 4, 3, 2, 1
5, 4, 2, 1 | s******n 发帖数: 3946 | 2 #define OUTPUT (x, y) \
if ( ++c == k) { \
printf("%d %d\n", x, y);\
return;\
}
void found(int[]a, int m, int[] b, int n, int k)
{
int i=0, j=0;
int c=0;
while(i
OUTPUT(a[i], b[j]);
if (i==m-1 && j
j++;
else if (j
i++;
else if (a[i]+ b[j+1] > a[i+1]+b[j]) {
int index = j+1;
while(index a[i+1]+b[j]) {
OUTPUT(a[i], b[index]);
index++;
}
i++;
} else { // a[i]+ b[j+1] <= a[i+1]+b[j]
int index = i+1;
while(index a[i]+b[j+1]) {
OUTPUT(a[index], b[j]);
index++;
}
j++;
}
}
} | m*******m 发帖数: 82 | 3 One more:
Select K largest numbers from N | f*******t 发帖数: 7549 | | g***i 发帖数: 4272 | 5 刚想了一个办法,不知道行不行。
因为两个数组中的数的和是介于(a[0]+b[0],a[m]+b[n])的,用mxn的时间得出所有可
能的数,然后用counting sort?
感觉m x n有些浪费,应该有办法把不必要的去掉 | g**********y 发帖数: 14569 | 6 你去ihasleetcode的网站上找吧,这道题最优解是二分,但是没有多少人能完全正确写
出来。太简单的写法,不用读就知道:或者效率不高,或者有bug。
sum(a[i],a[j]),0
【在 s******n 的大作中提到】 : 停好的题目练手:数组a大小m,数组b大小n,两个数组从大到小排序。求第kth大的sum(a[i],a[j]),0: 15, 4, 3, 2, 1 : 5, 4, 2, 1
| s******n 发帖数: 3946 | 7 仔细看看,不是同一题
【在 g**********y 的大作中提到】 : 你去ihasleetcode的网站上找吧,这道题最优解是二分,但是没有多少人能完全正确写 : 出来。太简单的写法,不用读就知道:或者效率不高,或者有bug。 : : sum(a[i],a[j]),0
| g**********y 发帖数: 14569 | 8 不好意思,看错了。这个要简单很多。这个在面试里好象被推广到NxN的矩阵。
【在 s******n 的大作中提到】 : 仔细看看,不是同一题
|
|