寻找两个有序数组的中位数
给定一个二叉树,返回它的中序 遍历。
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
解题思路
遍历合并
代码
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
nums := []int{}
nums1Position := 0
nums2Position := 0
max := 0
if (len(nums1)+len(nums2)) % 2 == 0 {
max = (len(nums1)+len(nums2))/2 + 1
}else{
max = (len(nums1)+len(nums2))/2 + 1
}
for i:=0;i < max;i++ {
var nums1Val,nums2Val int
if nums1Position > len(nums1) - 1 {
nums = append(nums,nums2[nums2Position])
nums2Position++
continue;
}else{
nums1Val = nums1[nums1Position]
}
if nums2Position > len(nums2) - 1 {
nums = append(nums,nums1[nums1Position])
nums1Position++
continue;
}else{
nums2Val = nums2[nums2Position]
}
// fmt.Println(nums1Val,nums2Val,nums1Position,nums2Position)
if nums1Val < nums2Val {
nums = append(nums,nums1Val)
nums1Position++
}else{
nums = append(nums,nums2Val)
nums2Position++
}
}
// fmt.Println(nums)
if (len(nums1)+len(nums2)) % 2 != 0 {
return float64(nums[len(nums)-1])
}else{
return float64((nums[len(nums)-1] + nums[len(nums)-2]))/2
}
}