// O(m+n)的算法会比较简单,通过双指针将两数组“拼合”成一个有序数组,然后开始遍历寻找排在(nums1.length + nums2.length) / 2 的数即可 var findMedianSortedArrays = function(nums1, nums2) { let i = 0, j = 0; const totalLen = nums1.length + nums2.length; const len = parseInt(totalLen / 2); const isSingle = totalLen % 2; // 是否为单数
let result = 0;
for (let k = 0; k <= len; k++) { // 谁小,先取谁,形成有序数组 // 边界:注意nums1或nums2 提前被取完的情况 let num = j >= nums2.length || nums1[i] < nums2[j] ? nums1[i++] : nums2[j++]; // 单数取中间一个数,双数取中间两个数 if (!isSingle && k == len - 1) result += num; if (k == len) result += num; }