美文网首页
Leetcode4-Median Of Two Sorted A

Leetcode4-Median Of Two Sorted A

作者: 数据科学爱好者 | 来源:发表于2018-10-08 09:38 被阅读15次
    问题描述

    There are two sorted arrays nums1 and nums2 of size m and n respectively.

    Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

    You may assume nums1 and nums2 cannot be both empty.

    示例

    Example 1:

    nums1 = [1, 3]
    nums2 = [2]

    The median is 2.0
    Example 2:

    nums1 = [1, 2]
    nums2 = [3, 4]

    The median is (2 + 3)/2 = 2.5

    算法思路

    针对该问题,大致思路为先将两个列表连接,排序;然后计算新的列表元素个数;最后查找并计算中位数。有以下两种实现方式,差异在于第一种排序,会覆盖掉原来的列表;第二种排序会生成原来列表的一个副本,生成一个迭代器。总的来说,推荐第一种方法,速度更快。(136 ms < 168 ms)

    代码实现

    方法一:

    class Solution:
        def findMedianSortedArrays(self, nums1, nums2):
            """
            :type nums1: List[int]
            :type nums2: List[int]
            :rtype: float
            """
            nums=nums1+nums2
            nums.sort()
            n=len(nums)
            if n%2:
                return nums[n//2]
            else:
                return (nums[n//2-1]+nums[n//2])/2
    

    方法二:

    class Solution:
        def findMedianSortedArrays(self, nums1, nums2):
            """
            :type nums1: List[int]
            :type nums2: List[int]
            :rtype: float
            """
            c=nums1+nums2
            c=sorted(c)
            n=len(c)
            a=int((n-1)/2)
            if n%2==0:
                return (c[a]+c[a+1])/2
            else:
                return c[a]
    
    参考资料
    1. https://blog.csdn.net/data8866/article/details/62884210/ Python中的 // 与 / 的区别
    2. https://stackoverflow.com/questions/22442378/what-is-the-difference-between-sortedlist-vs-list-sort
      What is the difference between sorted(list) vs list.sort()?
    3. https://leetcode.com/problems/median-of-two-sorted-arrays/ median-of-two-sorted-arrays

    相关文章

      网友评论

          本文标题:Leetcode4-Median Of Two Sorted A

          本文链接:https://www.haomeiwen.com/subject/tkddaftx.html