zoukankan      html  css  js  c++  java
  • 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])

    脚本一逻辑:

    • 合并列表
    • 列表排序
    • 判断合并列表元素个数,然后根据奇数或者偶数采取不同的措施
  • 相关阅读:
    Vue与Django数据交互
    Vue部分使用注意事项
    Node.js及npm详细安装教程
    vue组件实现简单的路由
    实现一个简单的marked编辑格式转换器部分功能
    Vue的父子组件数据传递
    Vue数据绑定
    [蓝桥杯][2013年第四届真题]错误票据
    历届试题 连号区间数
    [蓝桥杯][历届试题]蚂蚁感冒
  • 原文地址:https://www.cnblogs.com/mailong/p/11996833.html
Copyright © 2011-2022 走看看