文章 评论 浏览 31
// 一个O(n) 的解法,在排序的基础上做二路归并。 var num1 = [1, 2, 5, 7, 10]; var num2 = [3, 4, 5, 6, 8, 9]; console.log(findMedian(num1, num2)); function findMedian(arr1, arr2) { var arr = []; if (arr1[0] >= arr2[arr2.length - 1]) { arr = [...arr2, ...arr1]; } else if (arr1[arr1.length - 1] <= arr2[0]) { arr = [...arr1, ...arr2]; } else { var arr_i = 0; var arr1_i = 0; for (var arr2_i = 0; arr2_i < arr2.length; arr2_i ++) { if (arr1[arr1_i] < arr2[arr2_i]) { arr[arr_i] = arr1[arr1_i]; arr_i ++; arr1_i ++; arr2_i --; } else { arr[arr_i] = arr2[arr2_i]; arr_i ++; } } if (arr2_i == arr2.length) { for (var i = arr1_i; i < arr1.length; i ++) { arr[arr_i] = arr1[i]; arr_i ++; } } else { for (var i = arr2_i; i < arr2.length; i ++) { arr[arr_i] = arr2[i]; arr_i ++; } } } if (arr.length % 2 == 0) { return (arr[Math.floor((arr.length - 1) / 2)] + arr[Math.floor(arr.length / 2)]) / 2; } else { return arr[Math.floor(arr.length / 2)]; } }
文章 0 评论 0
接受
第 93 题:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2,请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log(m+n))。