首页 > 试题广场 >

多数组中位数

[编程题]多数组中位数
  • 热度指数:1335 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个升序的数组 arr1 和 arr2 ,求两个数组合并后的下中位数

注意:下中位数指在两个数组的数个数在偶数时取更小的

数据范围:两个数组的长度都满足 ,数组中的所有值都满足
示例1

输入

[1,2,3],[3,4,5]

输出

3
示例2

输入

[1,2,3],[4,5]

输出

3
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param arr1 int整型一维数组 
 * @param arr1Len int arr1数组长度
 * @param arr2 int整型一维数组 
 * @param arr2Len int arr2数组长度
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int getUpMedian(int* arr1, int arr1Len, int* arr2, int arr2Len ) {
    // write code here
    int maxCount = (arr1Len + arr2Len + 1) / 2;
    int ret = 0;
    int i = 0;
    int j = 0;
    
    for (int count = 0; count < maxCount; count++) {
        if (i < arr1Len) {
            if (j < arr2Len) {
                if (arr1[i] < arr2[j]) {
                    ret = arr1[i++];
                } else {
                    ret = arr2[j++];
                }
            } else {
                ret = arr1[i++];
            }
        } else {
            ret = arr2[j++];
        }
    }

    return ret;
}
发表于 2022-07-10 13:07:31 回复(0)

问题信息

难度:
1条回答 1520浏览

热门推荐

通过挑战的用户

查看代码