funcFindMedianSortedArrays(nums1 []int, nums2 []int)float64 { len1 := len(nums1) len2 := len(nums2) len := len1 + len2 var index1 int = len1/2 var index2 int = len2/2 need0,need1 := -1,-1 var result float64 = 0.0 need0 = (len - 1)/2 iflen%2 == 0 { need1 = need0 + 1 }
if len1 == 0 { if need1 == -1 { returnfloat64(nums2[need0]) } returnfloat64(nums2[need0]+nums2[need1])*0.5 }elseif len2 == 0{ if need1 == -1 { returnfloat64(nums1[need0]) } returnfloat64(nums1[need0]+nums1[need1])*0.5 }elseif nums1[index1] <= nums2[index2] { for i := index1 + 1; i< len1; i++ { index1 = i if nums1[index1] >= nums2[index2] || index1 > need0 + 1 { break } } }elseif nums1[index1] > nums2[index2] { for i := index2 + 1; i < len2; i++ { index2 = i if nums1[index1] <= nums2[index2] || index2 > need0 + 1 { break } } }else { returnfloat64(nums1[index1]) }
len = index2+index1+1
for i := len; i >= 0; i-- { if index1 >= 0 && index2 >= 0 { if nums1[index1] > nums2[index2] { if i == need0 || i == need1 { result += float64(nums1[index1]) if i == need0 { break } } index1-- } else { if i == need0 || i == need1 { result += float64(nums2[index2]) if i == need0 { break } } index2-- } }elseif index1 >= 0 { if need0 <= i { result += float64(nums1[need0]) } if need1 <= i && need1 != -1 { result += float64(nums1[need1]) } break }else { if need0 <= i { result += float64(nums2[need0]) } if need1 <= i && need1 != -1 { result += float64(nums2[need1]) } break } } if need1 != -1 { return result*0.5 } return result }