一刷
题目描述:
给定两个大小分别为
m
和n
的正序(从小到大)数组nums1
和nums2
。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为
O(log (m+n))
。
题目本身不是特别难,主要是对空字符串的处理。
class Solution:
def findMedianSortedArrays(self, nums1, nums2) -> float:
m, n = len(nums1), len(nums2)
median = (m+n-1)//2
p1, p2, idx = 0, 0, 0
n1 = 0
while idx <= median:
if p2>= n or (p1 < m and nums1[p1] < nums2[p2]):
n1 = nums1[p1]
p1 += 1
else:
n1 = nums2[p2]
p2 += 1
idx += 1
if (m+n)%2:
return n1
else:
if p1 == m:
n2 = nums2[p2]
elif p2 == n:
n2 = nums1[p1]
else:
n2 = min(nums1[p1], nums2[p2])
return (n1+n2)/2