目录
在两个长度相等的排序数组中找到上中位数
访问量:255

一、简介

给定两个递增数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。

上中位数:假设递增序列长度为n,为第n/2个数

案例1

输入:[1,2,3,4],[3,4,5,6]

返回值:3

说明:总共有8个数,上中位数是第4小的数,所以返回3。  

案例2

输入:[0,1,2],[3,4,5]

返回值:2

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

二、实现

思路:双指针在两个数组中遍历

/**
 * find median in two sorted array
 * @param arr1 int整型一维数组 the array1
 * @param arr2 int整型一维数组 the array2
 * @return int整型
*/
func findMedianinTwoSortedAray( arr1 []int ,  arr2 []int ) int {
    // write code here
    index :=( len(arr1) + len(arr2)) / 2
    
    var (
        i = 0 // 用于遍历arr1
        j = 0 // 用于遍历arr2
    )
    
    for  {
        if i > len(arr1) - 1 {
            index --
            
            for index != 0 {
                index --
                j ++
            }
            
            return arr2[j]
        } else if j > len(arr2) -1 {
            index --
            
            for index != 0 {
                index --
                i++
            }
            
            return arr1[i]
        } else {
            if arr1[i] <= arr2[j] {
                index --

                if index == 0 {
                    return arr1[i]
                }
                i++
            } else {
                index --

                if index == 0 {
                    return arr2[j]
                }
                j ++
            }
        }
    }
}