LeetCode:68.寻找两个正序数组的中位数
目录
1.寻找两个正序数组的中位数
1.寻找两个正序数组的中位数
class Solution {
public:int getMinKth(vector<int>& nums1, vector<int>& nums2, int k){int m = nums1.size(), n = nums2.size();int index1 = 0, index2 = 0;while(true){if(index1 == m) return nums2[index2 + k - 1];if(index2 == n) return nums1[index1 + k - 1];if(k == 1) return min(nums1[index1], nums2[index2]);int newIndex1 = min(index1 + k / 2 - 1, m - 1);int newIndex2 = min(index2 + k / 2 - 1, n - 1);int sum1 = nums1[newIndex1];int sum2 = nums2[newIndex2];if(sum1 <= sum2){k -= newIndex1 - index1 + 1;index1 = newIndex1 + 1;}else{k -= newIndex2 - index2 + 1;index2 = newIndex2 + 1;}}}double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {int length = nums1.size() + nums2.size();if(length % 2 == 1)return getMinKth(nums1, nums2, (length + 1) / 2);elsereturn (getMinKth(nums1, nums2, length / 2) + getMinKth(nums1, nums2, length / 2 + 1)) / 2.0;}
};