Open hyponet opened 4 years ago
年纪大了,连写个归并都这么费劲。
两个有序数组,找中位数,就是归并排,排到中间break,区分奇偶就可以。
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 { n1Len := len(nums1) n2Len := len(nums2) total := n1Len + n2Len if total == 0 { return 1 } brkIndex := total / 2 if total%2 == 1 { brkIndex += 1 } var ( n1Index int n2Index int ) count := 0 midNum := 0 for n1Index < n1Len || n2Index < n2Len { var crtNum int if count == brkIndex { break } if n1Index < n1Len { if n2Index < n2Len { if nums1[n1Index] < nums2[n2Index] { crtNum = nums1[n1Index] n1Index += 1 } else { crtNum = nums2[n2Index] n2Index += 1 } } else { crtNum = nums1[n1Index] n1Index += 1 } } else { crtNum = nums2[n2Index] n2Index += 1 } midNum = crtNum count += 1 } if total%2 == 1 { return float64(midNum) } else { var crtNum int if n1Index < len(nums1) { if n2Index < n2Len { if nums1[n1Index] < nums2[n2Index] { crtNum = nums1[n1Index] } else { crtNum = nums2[n2Index] } } else { crtNum = nums1[n1Index] } } else { crtNum = nums2[n2Index] } return float64(crtNum+midNum) / 2 } }
年纪大了,连写个归并都这么费劲。
两个有序数组,找中位数,就是归并排,排到中间break,区分奇偶就可以。