ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hot-4 寻找两个正序列数组的中位数

Hot-4 寻找两个正序列数组的中位数 解法两个有序数组的 merge 中位数的 成立条件 结合deepseek的这个class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) - float: if len(nums1) len(nums2): nums1,nums2 nums2, nums1 m,n len(nums1) , len(nums2) # left_sum (mn1) // 2 # 奇数的时候左边多一个 left 0 right m # while right left: i (leftright) // 2 j left_sum - i # 根据极限情况leftright0 或者 m,完成了边界条件的考虑 nums1_left_max nums1[i-1] if i0 else float(-inf) nums2_left_max nums2[j-1] if j0 else float(-inf) nums1_right_min nums1[i] if im else float(inf) nums2_right_min nums2[j] if jn else float(inf) # 判断中位数到达条件 if nums1_left_max nums2_right_min and nums2_left_max nums1_right_min: # 奇数 if (mn)% 2 1: return max(nums1_left_max,nums2_left_max) # 偶数 else: return (max(nums1_left_max,nums2_left_max) min(nums1_right_min,nums2_right_min)) /2 elif nums1_left_max nums2_right_min: # i太大 right -1 else: # i太小 left 1 return -1
返回列表