给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。
请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
示例 1:
nums1 = [1, 3] nums2 = [2] 中位数是 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5
思想还是归并排序中两个有序数组合并的思想,该题目没必要完全合并
class Solution:
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
i = 0
j = len(nums1)
m = 0
n = len(nums2)
sort_list = []
while i < j and m < n:
if nums1[i] <= nums2[m]:
sort_list.append(nums1[i])
i += 1
else:
sort_list.append(nums2[m])
m += 1
while i < j:
sort_list.append(nums1[i])
i += 1
while m < n:
sort_list.append(nums2[m])
m += 1
if len(sort_list)%2 == 0: # 偶数
idx1 = len(sort_list)//2 -1
idx2 = idx1 + 1
return float((sort_list[idx1] + sort_list[idx2]) / 2)
else:
idx = len(sort_list) // 2
return sort_list[idx]