Given two sorted list, find the k smallest number (binary search)
Given two sorted list, find the k smallest number (binary search)# JobHunting - 待字闺中
c*r
1 楼
这个binary search是怎么做啊? 我只想到merge再直接找第k个
s*n
2 楼
假设第一个数组有L个元素在前k个元素里(两个数组) 然后binary L
p*2
3 楼
array: A, B index: i, j 你需要找到 1. i+j+2=k 2. B[j]3. A[i]return max(A[i], B[j]) at the beginning i=0 j=k-2 然后binary search。
s*j
4 楼
int a[maxn],b[maxn]; int find(int aleft,int aright,int bleft,int bright,int k) { if ((aright-aleft+1)+(bright-bleft+1)cout<return 0; } if (aleft>aright) return b[bleft+k-1]; if (bleft>bright) return a[aleft+k-1]; int amid=(aleft+aright)>>1; int bmid=(bleft+bright)>>1; if (a[amid]<=b[bmid]) if (k<=(amid-aleft)+(bmid-bleft)+1) return find(aleft,aright,bleft,bmid-1,k); else return find(amid+1,aright,bleft,bright,k-(amid-aleft+1)); else if (k<=(amid-aleft)+(bmid-bleft)+1) return find(aleft,amid-1,bleft,bright,k); else return find(aleft,aright,bmid+1,bright,k-(bmid-bleft+1)); }