题目4
找两个有序数组的中位数。
找到第k个最小的数,然后背代码。
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length;
int n = nums2.length;
int mid =(m + n) / 2;
if((m + n) % 2 == 0){
double a = find_k(nums1, nums2, mid);
double b = find_k(nums1, nums2, mid + 1);
return (a + b) / 2;
}else{
return find_k(nums1, nums2, mid + 1);
}
}
public int find_k(int[] nums1, int[] nums2, int k){
int m = nums1.length;
int n = nums2.length;
int i = 0, j = 0;
for(; i < m && j < n;){
k--;
if(nums1[i] < nums2[j]){
if(k == 0)
return nums1[i];
i++;
}
else{
if(k == 0){
return nums2[j];
}
j++;
}
}
return i == m? nums2[j + k - 1] : nums1[ i + k - 1];
}
}