题解 | #在两个长度相等的排序数组中找到上中位数#

在两个长度相等的排序数组中找到上中位数

https://www.nowcoder.com/practice/6fbe70f3a51d44fa9395cfc49694404f?tpId=365&tqId=1008512&ru=/exam/oj&qru=/ta/spring-deliver-2024/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D365

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 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。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务