首页 > 编程语言 >[Python手撕]两个升序数组的中位数

[Python手撕]两个升序数组的中位数

时间:2024-09-06 11:47:13浏览次数:5  
标签:index return Python 中位数 len find 升序 nums1 nums2

class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:

        nums1_len = len(nums1)
        nums2_len = len(nums2)

        def find(nums1,nums2,k):
            # time.sleep(1)
            if not nums1:
                return nums2[k-1]
            if not nums2:
                return nums1[k-1]
            
            if k == 1:
                if nums1 and nums2:
                    return min(nums1[0],nums2[0])
                if nums1:
                    return nums1[0]
                if nums2:
                    return nums2[0]
            
            nums1_len = len(nums1)
            nums2_len = len(nums2)

            index = k//2
            if index <= nums1_len and index <= nums2_len:
                if nums1[index-1]<nums2[index-1]:
                    return find(nums1[index:],nums2,k-index)
                elif nums1[index-1]>=nums2[index-1]:
                    return find(nums1,nums2[index:],k-index)
            else:
                if index>nums1_len:
                    index1 = nums1_len
                    index2 = k - nums1_len
                else:
                    index2 = nums2_len
                    index1 = k - nums2_len

                if nums1[index1-1]<nums2[index2-1]:
                    return find(nums1[index1:],nums2,k-index1)
                elif nums1[index1-1]>=nums2[index2-1]:
                    return find(nums1,nums2[index2:],k-index2)

        if (nums1_len+nums2_len)%2 == 0:
            left = find(nums1,nums2,(nums1_len+nums2_len)//2)
            right = find(nums1,nums2,(nums1_len+nums2_len)//2+1)
            return ((left+right)/2) 
        else:
            return (find(nums1,nums2,(nums1_len+nums2_len)//2+1)) 

标签:index,return,Python,中位数,len,find,升序,nums1,nums2
From: https://www.cnblogs.com/DCFV/p/18399964

相关文章

  • Python爬虫案例: 跨境电商shopee虾皮指定商品评论采集
    前置:今天分享一个入门级爬虫案例:跨境电商平台虾皮的指定商品评论的采集,对于新手做爬虫练习是一个很不错的选择。如果你是电商工作者也可以利用它节省你宝贵的时间首先安装好要用的py库,requests用于发送请求,pandas用于做数据处理pipinstallrequestspipinstallpandas......
  • Python正则表达式
    常用方法re.compile(pattern):编译正则表达式模式,返回一个模式对象,用于匹配操作。提高匹配效率,适用于多次匹配的情况。match():从字符串开头开始匹配,只有在字符串的开头匹配成功时,才返回匹配对象。常用于验证字符串是否符合某种模式。search():在字符串中搜索第一个匹配的......
  • python中正则模块
    importre#1.findall()匹配字符串中所有符合正则的字符串,并返回一个列表result_list=re.findall(r"\d+","我的手机号是13812345678,我的QQ号是456789123")print(result_list,type(result_list))#['13812345678','456789123']<class'list&#......
  • 14 Python面向对象编程:反射
    本篇是Python系列教程第14篇,更多内容敬请访问我的Python合集在Python中,“反射”通常指的是根据字符串查找并执行相关的类、方法或者属性的能力。Python提供了几个内置函数和语法特性来支持这种能力,比如getattr(),setattr(),hasattr(),delattr()以及dir()等。这些功能......
  • 15 Python模块
    本篇是Python系列教程第15篇,更多内容敬请访问我的Python合集一个模块其实就是一个文件(以.py结尾)。使用模块的好处是便于维护和重用代码。要创建一个模块,只需编写一个新的文本文件,保存为.py扩展名。1引入模块1.1导入整个模块importmymodulemymodule.some_functi......
  • python 命令行参数解析
    追加参数pythonexample.pyNewYorkLosAngelesChicago给参数申明分配内存Locations:['NewYork','LosAngeles','Chicago']具体实现importargparseparser=argparse.ArgumentParser(description='Processsomelocations.')parser.ad......
  • Python
    Python安装HelloWorldprint("HelloWorld")基础字面量:代码中被写下来固定的值,数字:Number整数int浮点数float复数complex布尔bool字符串:String(双引号)列表:List元组:Tuple集合:Set字典:Dictionary注释单行注释#开头#我是注释print("HelloWorld")......
  • Python开发实例(30)文件搜索工具:创建一个程序,允许用户在指定目录下搜索文件
    创建一个文件搜索工具是一个非常有用的项目,它可以帮助用户在指定目录下查找文件。以下是一个基本的文件搜索工具示例,它使用Python的os库来进行文件搜索。importosdefsearch_files(directory,filename):found_files=[]forroot,_,filesinos.walk(director......
  • Flask:Python轻量级Web框架详解
    Flask是一个用Python编写的轻量级Web应用框架。它被设计为易于使用和扩展,非常适合小型项目和微服务,同时也能够支持大型应用。Flask依赖于少量的外部库,并且提供了一个简单的方式来创建Web应用。Flask的主要特点轻量级:Flask核心非常简单,使得它易于理解和扩展。扩展性:Flask可......
  • Python异步编程:asyncio库详解
    \asyncio是Python的标准库,用于编写单线程的并发代码。它使用async和await语法来定义和调用异步函数,使得I/O密集型程序能够更有效地使用资源。asyncio的主要特点事件循环:asyncio程序由事件循环驱动,它负责调度协程的执行。协程:使用async定义的异步函数被称为协程。任务:asyn......