leetcode4:寻找两个有序数组的中位数 python实现

题目

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。

示例 1

nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0

示例 2

nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5

代码

class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        minValue = -1
        maxValue = 999999999999999999999999
        len1 = len(nums1)
        len2 = len(nums2)
        size = len1 + len2
        if len1 > len2:
            len1, len2, nums1, nums2 = len2, len1, nums2, nums1
        cutL = 0
        cutR = len1
        cut1 = len1 // 2
        cut2 = size // 2 - cut1
        while cut1 <= len1:
            L1 = minValue if cut1 == 0 else nums1[cut1 - 1]
            R1 = maxValue if cut1 == len1 else nums1[cut1]
            L2 = minValue if cut2 == 0 else nums2[cut2 - 1]
            R2 = maxValue if cut2 == len2 else nums2[cut2]
            if L1 > R2:
                cutR = cut1 - 1
            elif L2 > R1:
                cutL = cut1 + 1
            else:
                if size % 2 == 0:
                    l = max(L1, L2)
                    r = min(R1, R2)
                    return (l + r) / 2
                else:
                    return min(R1, R2)
            cut1 = (cutR - cutL) // 2 + cutL
            cut2 = size // 2 - cut1

解法参考:此博客
然鹅,对于示例2的数据,本地运行正确2.5,但是leetcode上结果一直是2,不明白为什么。。。。。
leetcode4:寻找两个有序数组的中位数 python实现_第1张图片
问题已解决。(2+3)/2.0或者 (float)(2+3)/2即可。

你可能感兴趣的:(leetcode-python)