Question: #include using namespace std; int kth(int *S1, int *S2, int *V1, int *V2, int k) { if (S1 == V1) return S2[k]; if (S2 ==
#includeusing namespace std; int kth(int *S1, int *S2, int *V1, int *V2, int k) { if (S1 == V1) return S2[k]; if (S2 == V2) return S1[k]; int mid1 = (V1 - S1) / 2; int mid2 = (V2 - S2) / 2; if (mid1 + mid2 < k) { if (S1[mid1] > S2[mid2]) return kth(S1, S2 + mid2 + 1, V1, V2, k - mid2 - 1); else return kth(S1 + mid1 + 1, S2, V1, V2, k - mid1 - 1); } else { if (S1[mid1] > S2[mid2]) return kth(S1, S2, S1 + mid1, V2, k); else return kth(S1, S2, V1, S2 + mid2, k); } } int main() { int S1[5] = {2, 3, 6, 7, 9}; int S2[4] = {1, 4, 8, 10}; int k = 5; cout << kth(S1, S2, S1 + 5, S2 + 4, k - 1); return 0;
I solved this question using C++ with a time complexity of O(logn+logm)
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
