leetcode - JavaScript寻找两个正序数组的中位数
题目要求:
示例一:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
示例二:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
解题代码:
1 var findMedianSortedArrays = function (nums1, nums2) { 2 // concat数组合并方法合并两个数组 3 let arr = nums2.concat(nums1) 4 // 冒泡排序 5 for (let i = 0; i < arr.length; i++) { 6 for (let j = 0; j < arr.length - i - 1; j++) { 7 if (arr[j] > arr[j + 1]) { 8 let temp 9 temp = arr[j] 10 arr[j] = arr[j + 1] 11 arr[j + 1] = temp 12 } 13 } 14 } 15 // 通过数组的长度进行判断 16 if (arr.length % 2 === 0) { 17 // 数组长度为偶数时 18 return (arr[(arr.length / 2)] + arr[(arr.length / 2) - 1])/2 19 } else { 20 // 数组长度为奇数时 21 return arr[(arr.length - 1) / 2] 22 } 23 } 24 // 函数调用 25 findMedianSortedArrays([2, 2, 4, 4], [2, 2, 4, 4])
解题心得:
需要考虑到数组内存在负数的情况,可以采用冒泡排序对合并后的新数组进行排序,再根据数组的长度进行判断后得到中位数的计算
对于两个数组的合并,也可以采用遍历其中一个数组,再用push()方法,如下:
1 //循环遍历数组,合并数组,返回nums1 2 for (let i = 0; i < nums2.length; i++) { 3 nums1.push(nums2[i]) 4 }
其他内容与上面代码一致

浙公网安备 33010602011771号