对不起我是废物,没看到复杂度要求!应该用二分查找
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
var findMedianSortedArrays = function(nums1, nums2) {
let res = 0;
let addArr = nums1;
if(nums2.length !== 0){
nums2.forEach(item => {
addArr.push(item);
})
}
addArr.sort((a,b)=> a<b?-1:a>b?1:0);
const n = addArr.length;
if(n % 2 == 0){
// 偶数
res = (addArr[n/2-1] + addArr[n/2])/2;
}else{
res = addArr[Math.floor(n/2)];
}
return res;
};
sort排序的问题,JS中sort排序通过编码表实现,负数会导致顺序错乱,需要传入排序参数指定排序的顺序。
array.sort((a,b) => a-b) // 正序排序
array.sort((a,b) => b-a) // 倒序排序
解释:该函数参数的返回值有正负数和0,正序是负数,倒序是正数,相等是0。