給定兩個大小爲 m 和 n 的有序數組 nums1 和 nums2。
請你找出這兩個有序數組的中位數,並且要求算法的時間複雜度爲 O(log(m + n))。
你可以假設 nums1 和 nums2 不會同時爲空。
解法一:
暴力法,先合併爲一個有序數組。
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
nums =[]
m = len(nums1)
n = len(nums2)
if m == 0:
if n % 2 == 0:
return (nums2[n / 2 - 1] + nums2[n / 2]) / 2.0
else:
return nums2[n / 2]
if n == 0:
if m % 2 == 0:
return (nums1[m / 2 - 1] + nums1[m / 2]) / 2.0
else:
return nums1[m / 2]
count = 0
i = 0
j = 0
while count != (m + n) :
if i == m :
while j != n:
nums.append(nums2[j])
j+=1
break
if j == n:
while i != m:
nums.append(nums1[i])
i +=1
break
if nums1[i] < nums2[j]:
nums.append(nums1[i])
i +=1
else:
nums.append(nums2[j])
j +=1
count = m+n
if count % 2 == 0:
return (nums[count / 2 - 1] + nums[count / 2]) / 2.0
else:
return nums[count / 2]