Hot-4 寻找两个正序列数组的中位数
2026/8/7 4:44:11 网站建设 项目流程

解法:两个有序数组的 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 = (m+n+1) // 2 # 奇数的时候左边多一个 left = 0 right = m # while right >= left: i = (left+right) // 2 j = left_sum - i # 根据极限情况,left=right=0 或者 m,完成了边界条件的考虑 nums1_left_max = nums1[i-1] if i>0 else float("-inf") nums2_left_max = nums2[j-1] if j>0 else float("-inf") nums1_right_min = nums1[i] if i<m else float("inf") nums2_right_min = nums2[j] if j<n else float("inf") # 判断中位数到达条件: if nums1_left_max <= nums2_right_min and nums2_left_max <= nums1_right_min: # 奇数: if (m+n)% 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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询