两个排序数组的中位数

两个排序数组的中位数

给定两个大小为 m 和 n 的有序数组nums1 nums2 

请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。

示例 1:

nums1 = [1, 3]

nums2 = [2]

中位数是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

中位数是 (2 + 3)/2 = 2.5

class Solution:

    def findMedianSortedArrays(self, nums1, nums2):

        """

        :type nums1: List[int]

        :type nums2: List[int]

        :rtype: float

        """

        nums1_len = len(nums1)

        nums2_len = len(nums2)

        if nums1_len==0:

            if nums2_len==0:

                return

            else:

                return (nums2[~nums2_len//2]+nums2[nums2_len//2])/2

        if nums2_len==0:

            if nums1_len==0:

                return

            else:

                return (nums1[~nums1_len//2]+nums1[nums1_len//2])/2

        su = 0

        result=[]

        while len(nums1) and len(nums2):

            if nums1[0]<nums2[0]:

                result.append(nums1.pop(0))

            else:

                result.append(nums2.pop(0))

        if len(nums1):

            result+=nums1

        elif len(nums2):

            result+=nums2

        return (result[(nums1_len+nums2_len)//2]+result[~(nums1_len+nums2_len)//2])/2

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容