Leetcode4.寻找两个正序数组的中位数

4. 寻找两个正序数组的中位数

给定两个大小分别为 mn 的正序(从小到大)数组 nums1nums2。请你找出并返回这两个正序数组的 中位数

算法的时间复杂度应该为 O(log (m+n))

示例 1:

1
2
3
>输入:nums1 = [1,3], nums2 = [2]
>输出:2.00000
>解释:合并数组 = [1,2,3] ,中位数 2

示例 2:

1
2
3
>输入:nums1 = [1,2], nums2 = [3,4]
>输出:2.50000
>解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

困难题

目前还做不明白,只会先合并之后再取出中位数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
nums = nums1+nums2
i,j,k = 0,0,0
while(i<len(nums1) and j <len(nums2)):
if (nums1[i]<=nums2[j]):
nums[k] = nums1[i]
k += 1
i += 1
else:
nums[k] = nums2[j]
k += 1
j += 1
while(i < len(nums1)):
nums[k] = nums1[i]
k += 1
i += 1
while(j < len(nums2)):
nums[k] = nums2[j]
k += 1
j += 1
return (nums[len(nums)/2]+nums[(len(nums)-1)/2])/2.0