题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
方法一:
方法解析:由于寻找两个合并数组的中位数,因此想到数组长度为奇数时,中位数为nums[len(nums) // 2];当数组长度为偶数时,中位数为(nums[m // 2] + nums[(m - 1) // 2]) / 2
1. 合并两个数组
2. 对合并数组进行排序
3. 根据数组长度是奇数还是偶数来计算数组的中位数
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
nums = nums1 + nums2
nums.sort()
m = len(nums)
if m % 2 != 0: #合并数组的长度为奇数
mid = nums[m // 2]
else: #合并数组的长度为偶数
mid = (nums[m // 2] + nums[(m - 1) // 2]) / 2
return mid
还有其他方法,暂时了解一种