doublefindMedianSortedArrays(vector<int> &nums1, vector<int> &nums2){ // 1. 合并两个数组 vector<int> merged; int i = 0, j = 0; int m = nums1.size(), n = nums2.size();
// 归并两个有序数组 while (i < m && j < n) { if (nums1[i] <= nums2[j]) { merged.push_back(nums1[i]); i++; } else { merged.push_back(nums2[j]); j++; } }
// 将剩余元素加入,某个数组已经取光而另外的还有剩 while (i < m) { merged.push_back(nums1[i]); i++; } while (j < n) { merged.push_back(nums2[j]); j++; }
// 2. 计算中位数 int total = merged.size(); if (total % 2 == 1) { // 奇数个元素,返回中间那个 return merged[total / 2]; } else { // 偶数个元素,返回中间两个的平均值 int mid1 = merged[total / 2 - 1]; int mid2 = merged[total / 2]; return (mid1 + mid2) / 2.0; // 注意:要用2.0,否则是整数除法 } }