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         }

  其他内容与上面代码一致

posted @ 2022-03-21 10:55  Viviya佚  阅读(66)  评论(0)    收藏  举报