# 【Day68 - 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, 4]

则中位数是 (2 + 3)/2 = 2.5

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

# 我的回答

# 解法一

暴力归并

# 时空复杂度 O(m+n)

var findMedianSortedArrays = function (nums1, nums2) {
    let allLength = nums1.length + nums2.length
    let isOdd = (allLength) % 2 !== 0
    let k = isOdd ? Math.floor((allLength) / 2) : allLength / 2
    let arr = new Array(k)
    let i = 0; j = 0; curr = 0
    while (i < nums1.length && j < nums2.length && curr <= k) {
        nums1[i] < nums2[j] ? arr[curr++] = nums1[i++] : arr[curr++] = nums2[j++]
    }
    while (i < nums1.length && curr <= k) arr[curr++] = nums1[i++];
    while (j < nums2.length && curr <= k) arr[curr++] = nums2[j++];
    return isOdd ? arr[arr.length - 1] : (arr[arr.length - 1] + arr[arr.length - 2]) / 2
};

# 参考回答

Last Updated: 12/22/2022, 9:53:26 AM