思路:一:利用兩指標遍歷直接找出第k小值即可
二:部落格:
將a陣列切前s**,b陣列切前k-s**,通過對a[sa-1]和b[k-sa-1]大小比較,可捨棄掉其中一部分,從而實現二分查詢出第k小值
三:部落格:
利用對a陣列切前l1片,在通過對b陣列切前l2=k-l1片,通過分析比較,可實現二分查詢到第k小值
code:
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
/*class solution else if(l2<0)elseelse
}--h;
} res=p;
if((nums1.size()+nums2.size())%2==0)else if(l2<0)elseelse
}} return res;
}};*/
/*將a陣列切前s**,b陣列切前k-s**,通過對a[sa-1]和b[k-sa-1]大小比較,可捨棄掉其中一部分,從而實現二分查詢出第k小值
*//*
class solution
if(nums1[l1+p1-1]<=nums2[l2+p2-1]) return find_k_min(nums1,nums2,l1+p1,l2,k-p1);
else return find_k_min(nums1,nums2,l1,l2+p2,k-p2); }
double findmediansortedarrays(vector& nums1, vector& nums2)
};*/
/*利用對a陣列切前l1片,在通過對b陣列切前l2=k-l1片,通過分析比較,可實現二分查詢到第k小值
*/class solution else if(nums1[l1]<=nums2[l2+1])
if(boo) l=h+1;
else r=h-1;
} return max(nums1[r],nums2[k-r-2]); }
double findmediansortedarrays(vector& nums1, vector& nums2)
double res=find_k_min(nums1,nums2,(len1+len2+1)/2);
if((len1+len2)%2==0) res=(res+find_k_min(nums1,nums2,(len1+len2)/2+1))/2;
return res;
}};int main()
for(int i=0;i>x;
v2.push_back(x);
} cout<
return 0;
}
LeetCode 4 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...
LeetCode 4 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 nums2 3,...
LeetCode4 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 nums2 3,...