/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * find median in two sorted array * @param arr1 int整型一维数组 the array1 * @param arr2 int整型一维数组 the array2 * @return int整型 */ function findMedianinTwoSortedAray( arr1 , arr2 ) { // write code here const length = (arr1.length + arr2.length)/2; const list = []; arr1.forEach((item) => { list.push(item); }) arr2.forEach((item) => { list.push(item); }) list.sort((a,b) => a-b); return list[length -1 ]; } module.exports = { findMedianinTwoSortedAray : findMedianinTwoSortedAray };
思路:
题目要求的是,找到两个数组的上中位数,如果数组的位数为8位,则找到第4小的的数据,进行返回即可。
第一步:将两个数组的长度加起来,除以2,拿到需要返回的数字的位数k。
第二步:将两个数组合并起来,得到一个新数组list。并且将数组进行升序排序。这里需要注意,上中位数指的是,中间小的数据,所以必须进行排序。
第三步:直接返回新数组list中,第k个数据。这里容易出错,结果不是返回list[k],而是返回list[k-1],因为数字下标是从0开始的,第k个数据,在数组中的下标是k-1。