LeetCode 4 寻找两个正序数组的中位数

Posted Starzkg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 4 寻找两个正序数组的中位数相关的知识,希望对你有一定的参考价值。

https://leetcode-cn.com/problems/median-of-two-sorted-arra

解决方案

Go 版本

func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
    len1,len2:=len(nums1) , len(nums2)
    len := len1+len2
    if len1>len2 {
        return findMedianSortedArrays(nums2,nums1) 
    }
    if len1==0 {
        if len2 % 2 != 0 {
            return float64(nums2[len2/2])
        }else {
            return float64(nums2[len2/2-1] + nums2[len2/2])/2.0
        }    
    }
    l:=0
    r:=len1
    for l<=r {
        cur1:=l + (r-l)/2
        cur2:=(len+1)/2 - cur1
        var L1,R1,L2,R2 int;
        if cur1==0 {
            L1 = -1e10
        }else{
            L1 = nums1[cur1-1]
        }
        if cur1==len1 {
            R1 = 1e10
        }else{
            R1 = nums1[cur1]
        }
        if cur2==0 {
            L2 = -1e10
        }else{
            L2 = nums2[cur2-1]
        }
        if cur2==len2 {
            R2 = 1e10
        }else{
            R2 = nums2[cur2]
        }
        if R1 < L2 {
            l = cur1 + 1
        } else if L1 > R2 {
            r = cur1 - 1
        }else {
            if len % 2 != 0 {
                return float64(max(L1,L2))
            }else{ 
                return float64(max(L1,L2) + min(R1,R2))/2.0
            }    
        }
    }
    return 0
}

func max(a int ,b int ) int {
    if a>b {
        return a
    }
    return b
}

func min(a int , b int ) int {
    if a<b {
        return a
    }
    return b
}

参考文章

寻找两个正序数组的中位数-官方题解

以上是关于LeetCode 4 寻找两个正序数组的中位数的主要内容,如果未能解决你的问题,请参考以下文章

Hard | LeetCode 4. 寻找两个正序数组的中位数 | 二分法

精选力扣500题 第67题 LeetCode 4. 寻找两个正序数组的中位数c++/java详细题解

LeetCode4. 寻找两个正序数组的中位数

LeetCode4. 寻找两个正序数组的中位数

LeetCode 4.寻找两个正序数组的中位数

LeetCode 4.寻找两个正序数组的中位数