LC4
给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m n))
。
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int m = nums1.size(), n = nums2.size(), k = 0, i = 0, j = 0;//把重复使用的数据用一个变量代替
vector<int> sub(m n, 0);
while (i < m && j < n)//将小数放在前面,大数放在后面
sub[k ] = nums1[i] < nums2[j] ? nums1[i ] : nums2[j ];
while (i < m) sub[k ] = nums1[i ];//相当于sub[k]=nums1[1],k ,i ;
while (j < n) sub[k ] = nums2[j ];//同理
return k % 2 ? sub[k / 2] : (sub[k / 2] sub[k / 2 - 1]) / 2.0; // 判断奇偶
}
};//要会用a[i ]-->>a[i],i ;