第四题: class Solution { public: int find_kth(vector<int>& arr1, vector<int>& arr2, int st1,int ed1,int st2,int ed2,int k) { int m = ed1 - st1+1; int n = ed2 - st2+1; if (m <= 0) return arr1[st2 + k - 1]; if (n <= 0) return arr1[st1 + k - 1]; if(k==m+n) return max(arr1[m], arr2[n]); if (k == 1) return min(arr2[st1],arr2[st2]); int mid1 = min(st1 += k / 2 - 1,ed1); int mid2 = min(st2 += k / 2 - 1,ed2); if (arr1[mid1] < arr2[mid2]) { return find_kth(arr1,arr2,mid1+1,ed1,st2,ed2,k-(mid1+1-st1)); } else return find_kth(arr1, arr2, st1, ed1, mid2+1, ed2, k - (mid2 + 1 - st2)); } int find_kth(vector<int>& arr1, vector<int>& arr2, int k) { // write code here int m = arr1.size(); int n = arr2.size(); if (k == m + n) return max(arr1[m],arr2[n]); return find_kth(arr1, arr2, 0, min(m-1, k), 0, min(n-1, k), k); } };

相关推荐

04-25 19:29
已编辑
宁波大学 运营
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
牛客网
牛客企业服务