LeetCode每日刷题1-4.寻找两个正序数组的中位数(JavaScript)
LeetCode题目4.寻找两个正序数组的中位数(JavaScript解法)
题目来源:力扣(LeetCode)
题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数
示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
示例 2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
解题思路:
两个数组进行组合排序由小到大,整合为一个数组进行遍历
遍历数组后利用下标奇偶性寻找中位数,如:
[1,2,3]
0 1 2
中位数为2,下标为1
[1,2,3,4,5,6]
0 1 2 3 4 5
中位数为(3+4)/2 = 3.5
下标为2,3
需要用到数组长度,长度为奇数则中位数等于下标中间数,长度为偶数则需将中间两位数相加除二
实现代码:
var findMedianSortedArrays = function(nums1, nums2) { const abb = [nums1,nums2]; let middle = 0; let result = abb.flat().sort((a, b) => a-b); middle = 0; if((result.length - 1) % 2 == 0){ let i = (result.length - 1) / 2; middle = result[i]; }else{ if((result.length - 1) % 2 == 1){ i = Math.floor((result.length - 1)/2); middle = (result[i] + result [i+1]) / 2; } } return middle; };

浙公网安备 33010602011771号