首页 > 试题广场 >

多数组中位数

[编程题]多数组中位数
  • 热度指数:1723 时间限制: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
package main
import _"fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param arr1 int整型一维数组 
 * @param arr2 int整型一维数组 
 * @return int整型
*/
func getUpMedian( arr1 []int ,  arr2 []int ) int {
    var target,n,m int
    n,m=len(arr1),len(arr2)
    if (n+m)%2==0{
        target=(n+m)/2-1
    }else{
        target=(n+m)/2
    }
    var x int
    for target>=0&&n>0&&m>0{
        if arr1[0]>arr2[0]{
            x=arr2[0]
            arr2=arr2[1:]
            m--
        }else{
            x=arr1[0]
            arr1=arr1[1:]
            n--
        }
        target--
        if target<0{
            return x
        }
    }
    if n>0{
        return arr1[target]
    }
    return arr2[target]
}

发表于 2023-03-15 00:18:19 回复(0)