思路一:
错误:数组 1 的中位数+数组 2 的中位数
比如 12 34 中位数 2.5,但是 123 4 中位数 3
思路二:
合并数组,取中位数,合并到一半+1 的时候,就知道中位数了
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
i, j := 0, 0
var sum []int
total := len(nums1) + len(nums2)
sumCount := 0
for (i < len(nums1) || j < len(nums2)) && sumCount <= total/2 {
if i < len(nums1) && j >= len(nums2) {
//取i
sum = append(sum, nums1[i])
i++
} else if j < len(nums2) && i >= len(nums1) {
//取j
sum = append(sum, nums2[j])
j++
} else {
//取两个最小的
//err:应该选一个加入,然后一个下标++
//sum = append(sum, min(nums1[i], nums2[j]))
//i++
//j++
minVal:=min(nums1[i], nums2[j])
sum = append(sum, minVal)
if minVal==nums1[i]{
i++
}else {
j++
}
}
sumCount++
}
//边界条件
if sumCount < 2 {
return float64(sum[0])
}
//取倒数第二一位或者最后两位的平均值
if total%2 != 0 {
return float64(sum[sumCount-1])
}
return (float64(sum[sumCount-1]) + float64(sum[sumCount-2])) / 2
}
func min(x, y int) int {
//取最小值
if x < y {
return x
}
return y
}
思路三:二分查找
方法比较难。。后续再做