4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {m,n := len(nums1),len(nums2)if m>n{return findMedianSortedArrays(nums2,nums1)}iMin ,iMax,laftLen := 0,m,(n+m+1)/2for iMin <= iMax{i := iMin + (iMax-iMin)/2j := laftLen - iif i > iMin && nums1[i-1] > nums2[j]{iMax = i - 1} else if i < iMax && nums2[j-1] > nums1[i]{iMin = i + 1} else{leftMax := 0if i == 0{leftMax = nums2[j-1]}else if j == 0{leftMax = nums1[i-1]}else{leftMax = max(nums1[i-1],nums2[j-1])}if (m+n)%2 != 0{return float64(leftMax)}rightMin := 0if i == m {rightMin = nums2[j]}else if j == n{rightMin = nums1[i]}else{rightMin = min(nums1[i],nums2[j])}return float64(leftMax+rightMin)/2.0}}return 0.0}func max(a,b int)int{if a > b{return a}else{return b}}func min(a,b int )int{if a > b{return b}else{return a}}
