4.寻找两个正序数组的中位数
题目
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
解题
暴力求解
解题步骤:
- 循环合并两个数组
- 更具合并的数组找出中位数
go
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
length := len(nums1) + len(nums2)
merged := make([]int, 0, length)
i, j := 0, 0
for i < len(nums1) && j < len(nums2) {
if nums1[i] < nums2[j] {
merged = append(merged, nums1[i])
i++
} else {
merged = append(merged, nums2[j])
j++
}
}
merged = append(merged, nums1[i:]...)
merged = append(merged, nums2[j:]...)
if length%2 == 0 {
return float64(merged[length/2-1]+merged[length/2]) / 2
}
return float64(merged[length/2])
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22