4.寻找两个正序数组的中位数
直接读的思路,时间复杂度没有满足题目中的log(m+n),待优化
class Solution:
def read(self, a, b):
# 从两个数组中读出来一个较小的数字,然后删除原始数组中的数字
if not a:
r = b[0]
del b[0]
elif not b:
r = a[0]
del a[0]
elif a[0] < b[0]:
r = a[0]
del a[0]
else:
r = b[0]
del b[0]
return r
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
total_len = len(nums1) + len(nums2)
n = 0
if total_len % 2 == 0:
n = total_len // 2 - 1
else:
n = total_len // 2
for i in range(n):
self.read(nums1, nums2)
r = 0
if total_len % 2 == 0:
for i in range(2):
r += self.read(nums1, nums2)
return r / 2
else:
return self.read(nums1, nums2)