1.Description
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
2.Anaylasis
由于题目规定复杂度为O(m+n),利用两个数组都是排好序的特点,依次遍历两个数组中的数,
按由小到大的顺序加入新的列表即可。用两个变量i和j指示在两个数组中分别处理到哪个位置。
3.Code
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
num=[]
i=j=0
while i<len(nums1) and j<len(nums2):
if nums1[i] > nums2[j]:
num+=[nums2[j]]
j+=1
elif nums1[i] < nums2[j]:
num+=[nums1[i]]
i+=1
else:
num+=[nums1[i],nums2[j]]
i+=1
j+=1
if i<len(nums1):
num+=nums1[i:]
if j<len(nums2):
num+=nums2[j:]
if len(num)%2==0:
return (num[len(num)//2-1]+num[len(num)//2])/2
else:
return num[len(num)//2]