Problem
Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.
The overall run time complexity should be O(log (m+n)).
Example
Input: nums1 = [1,3], nums2 = [2]Output: 2.00000Explanation: merged array = [1,2,3] and median is 2.
Input: nums1 = [1,2], nums2 = [3,4]Output: 2.50000Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
Input: nums1 = [0,0], nums2 = [0,0]Output: 0.00000
Input: nums1 = [], nums2 = [1]Output: 1.00000
Solution
var findMedianSortedArrays = function (nums1, nums2) {var len = nums1.length + nums2.length;var midIndex1 = Math.floor(len / 2);var midIndex2 = midIndex1;if (len % 2 === 0) {midIndex2 = midIndex1 - 1;}if (nums1.length === 0) {return (nums2[midIndex1] + nums2[midIndex2]) / 2;}if (nums2.length === 0) {return (nums1[midIndex1] + nums1[midIndex2]) / 2;}var arr = [];var source1 = [...nums1], source2 = [...nums2];while(arr.length <= midIndex1) {if (source1.length === 0) {let index1 = midIndex1 - arr.length;let index2 = (index1 - (midIndex1 - midIndex2));let num1 = source2[index1];let num2 = index2 >= 0 ? source2[index2] : arr[arr.length - 1];return (num1 + num2) / 2;}if (source2.length === 0) {let index1 = midIndex1 - arr.length;let index2 = (index1 - (midIndex1 - midIndex2));let num1 = source1[index1];let num2 = index2 >= 0 ? source1[index2] : arr[arr.length - 1];return (num1 + num2) / 2;}if (source1[0] < source2[0]) {arr.push(...source1.splice(0, 1));} else {arr.push(...source2.splice(0, 1));}}return (arr[arr.length - 1] + arr[arr.length - 1 - (midIndex1 - midIndex2)]) / 2;};
