人工智能/模式识别/机器学习精华专题机器学习和人工智能入门大数据,机器学习,人工智能

两个排序数组的中位数

2018-05-11  本文已影响3人  不爱去冒险的少年y

两个排序数组的中位数

给定两个大小为 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

上一篇 下一篇

猜你喜欢

热点阅读