• Leetcode_04【寻找两个有序数组的中位数】


    文章目录:

    • 题目
    • 脚本一及注释
    • 脚本一逻辑

    题目:

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


    脚本一及注释:【116ms】

    class Solution:                                          #leetcode固定格式
        def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:  #leetcode固定格式
            len1 = len(nums1)             #获取第一个列表的长度             
            len2 = len(nums2)             #获取第二个列表的长度
            nums3 = nums1 + nums2           #合并两个列表
            nums3.sort()                #将合并后的列表进行升序排序
            num = (len1 + len2)%2           #将两列表长度取和后除以2取余数,用于判断合并列表的元素个数是单数还是双数
            num1 = int((len1 + len2) / 2)          #求合并列表的个数的中间数,并取整数
            if(num == 0):                #如果余数为0,合并列表元素个数为偶数,进入相应的语句取中间数
                return((nums3[num1]+nums3[num1-1])/2)
            else:                     #如果合并列表为奇数,则直接获取相应的中间数即可     
                return(nums3[num1])

    脚本一逻辑:

    • 合并列表
    • 列表排序
    • 判断合并列表元素个数,然后根据奇数或者偶数采取不同的措施
  • 相关阅读:
    最近写代码的风格,请帮忙分析下优缺点
    jQuery的回调管理机制(三)
    jQuery的回调管理机制(二)
    jQuery的回调管理机制
    iOS组件化
    iOS内存泄漏检测及分析
    iOS 路由
    iOS https抓包工作记录
    第二章 算法入门
    第一章 算法在计算中的作用
  • 原文地址:https://www.cnblogs.com/mailong/p/11996833.html
Copyright © 2020-2023  润新知