4. Median of Two Sorted Arrays go语言

go语言

func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
    
    len_nums1,len_nums2 := len(nums1),len(nums2)
    
    len_num := len_nums1 + len_nums2
    var middle int = len_num / 2
    
    var m float64 = 0.0
    if len_num % 2 == 1{
        i,j,t := 0,0,0
        for {
            if t > middle || i > len_nums1 - 1 || j > len_nums2 - 1{
                break
            }
            if nums1[i] <= nums2[j]{
                m = float64(nums1[i])
                i++
                t++
            }else{
                m = float64(nums2[j])
                j++
                t++  
            }  
        } 
        if t <= middle {
            if i > len_nums1 - 1{
                j += middle - t
                m = float64(nums2[j])
            }else if j > len_nums2 - 1{
                i += middle - t
                m = float64(nums1[i])
            }
        }
    }else{
        i,j,t,l,r := 0,0,0,0,0
        for {
            if t > middle  || i > len_nums1 - 1 || j > len_nums2 - 1{
                break
            }
            if nums1[i] <= nums2[j]{
                if t == middle - 1{
                    l = nums1[i]
                } else if t == middle{
                    r = nums1[i]
                } 
                i++
                t++
            }else{
                if t == middle - 1{
                    l = nums2[j]
                } else if t == middle{
                    r = nums2[j]
                } 
                j++
                t++
            }
        }
        if t <= middle {
            if i > len_nums1 - 1{
                j += middle - t
                if l == 0{
                    l = nums2[j - 1]
                    r = nums2[j]
                    
                }else{
                    r = nums2[j]
                }
               
            }else if j > len_nums2 - 1{
               i += middle - t
                if l == 0{
                    l = nums1[i - 1]
                    r = nums1[i]
                    
                }else{
                    r = nums1[i]
                }
            }
        }
        m = float64(l + r) / 2
    }
    
    return m
    
}

猜你喜欢

转载自blog.csdn.net/dyd961121/article/details/81196594
今日推荐