首页 > 试题广场 >

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

[编程题]在两个长度相等的排序数组中找到上中位数
  • 热度指数:1235 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个有序数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。
上中位数:假设递增序列长度为n,若n为奇数,则上中位数为第n/2+1个数;否则为第n个数
[要求]
时间复杂度为,额外空间复杂度为

输入描述:
第一行一个整数N,表示数组大小。
接下来一行N个整数,表示arr1内的元素
再接下来一行N个整数,表示arr内的元素


输出描述:
输出一个整数表示答案
示例1

输入

4
1 2 3 4
3 4 5 6

输出

3

说明

总共有8个数,上中位数是第4小的数,所以返回3。
示例2

输入

3
0 1 2
3 4 5

输出

2

说明

总共有6个数,那么上中位数是第3小的数,所以返回2

备注:

头像 峰峰的牛客
发表于 2020-04-17 15:24:01
链接:传送门来源:牛客网 问题描述: 解题思路: 思路1:暴力解法 观察题我们可以得到:就是有两个有序的数组,然后把他们合并起来时求出这一串数据的中位数。既然是求新组合数据的中位数,那么我们可以将这两个数组合并为一个数组,然后重新排序,找出要求的中位数就好了。 思路2:思路1的改装版 同样是将这两 展开全文