一、概述:
这道题思路其实蛮简单的,就是边界太难考虑了,所以一直没能通过,写了好长的代码考虑边界,然后看到一个大神写的代码:
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/c-er-fen-cha-zhao-by-da-li-wang/ 。简直是叹为天人,敬佩不已,发现自己走的路还很长。
二、思路:
由于是两个排序的数组,只要两个数组的间距为保持为总长的一半,二分遍历较短的数组,然后通过一半思路去求另一个数组的位置,比较数组的左边是否小于另一数组当前节点,如果是,找到中位数的位置。
特别需要注意的是,在较长的数组上一定存在一个中位数。
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
if (nums1.size() > nums2.size())
return findMedianSortedArrays(nums2, nums1);
int M = nums1.size();
int N = nums2.size();
int l = 0;
int r = M;
while (l <= r) {
int mid = (r - l) / 2 + l;
int rightPos = (N + M) / 2 -