解题思路
该题要求两个正序数组中的中位数,首先要将两个数组合并并排序。这就涉及到对数组排序的问题。对于数组长度为奇数的情况下,中位数就是数组中间的那个数,对于长度为偶数的数组,中位数就是中间两个数的平均数
代码
var findMedianSortedArrays = function(nums1, nums2) {const result = [...nums1,...nums2];const len = result.length;result.sort((a,b)=> a - b);let idx = 0;if(len % 2 !== 0){idx = (len - 1)/2return result[idx].toFixed(5)}else{idx = len / 2;return ((result[idx-1] + result[idx])/2).toFixed(5)}};const nums1 = [1,2],nums2 = [3,4]console.log(findMedianSortedArrays(nums1,nums2));
主要应用了Array.sort()对数组进行排序,其实题目有个要求:算法的时间复杂度应该为 O(log (m+n)) 。且没有利用到数组有序这一特点。
优化
解题思路一:
合并数组并进行排序,时间复杂度最快为O((m+n)log(m+n))
解题思路二:参考leetcode第88题,利用快慢指针进行排序
解题思路三:二分查找
【未完待续,先学习快慢指针进行排序】
