leetcode记录4.Median of Two Sorted Arrays

Median of Two Sorted Arrays

class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        if (len(nums1) + len(nums2)) % 2 == 1:
            return self.findk(nums1, nums2, (len(nums1) + len(nums2) + 1) // 2)
        else:
            return (self.findk(nums1, nums2, (len(nums1) + len(nums2)) // 2) + self.findk(nums1, nums2, (len(nums1) + len(nums2)) // 2 + 1)) / 2
        
        
    def findk(self, nums1, nums2, k):
        l1= len(nums1)
        l2 = len(nums2)

        if l1 > l2:
            return self.findk(nums2, nums1, k)
        if l1 == 0:
            return nums2[k-1]
        if k == 1:
            return min(nums1[0], nums2[0])

        a = min(k // 2, l1)
        b = k - a
        if nums1[a - 1] < nums2[b- 1]:
            return self.findk(nums1[a:], nums2, k - a)
        elif nums1[a - 1] > nums2[b- 1]:
            return self.findk(nums1, nums2[b:], k - b)
        else:
            return nums1[a - 1]
        

猜你喜欢

转载自blog.csdn.net/csdn_47/article/details/88142770