【leetcode】4 Python实现两个排序数组的中位数

  • Post author:
  • Post category: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:
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        m=len(nums1)
        n=len(nums2)
        i=0
        j=0
        a=[]
        while i<m and j<n:
            if nums1[i]<nums2[j]:
               a.append(nums1[i])
               i+=1
            else:
               a.append(nums2[j])
               j+=1
        if i==m:
            for each in range(j,n):
                a.append(nums2[each])
        
        if j==n:
             for each in range(i,m):
                 a.append(nums1[each])
        if (m+n)%2==0:
             return((a[(m+n)//2-1]+a[(m+n)//2])/2) 
        else:
             return(a[(m+n+1)//2-1])



版权声明:本文为qq_42820064原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。