当前位置: 首页 > news >正文

hot100经典:困难 Leetcode 4. 寻找两个正序数组的中位数

描述

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。

示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

示例 2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

思路

转换为找topK问题,由于有两个数组,分别在两边找tok K/2,想法很精妙

代码

使用递归,后续可以优化数组深拷贝带来的时间开销

class Solution:def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:n = len(nums1)m = len(nums2)if((n+m)%2 != 0):return float(self.getTopK((n+m)//2+1,nums1,nums2))else:return (self.getTopK((n+m)//2+1,nums1,nums2) + self.getTopK((n+m)//2,nums1,nums2)) / 2 def getTopK(self,k,arr1,arr2):if(not arr1): return arr2[k-1]if(not arr2): return arr1[k-1]if(k == 1): return min(arr1[0],arr2[0])kk = min(k//2,len(arr1),len(arr2))if(arr1[kk-1] <= arr2[kk-1]):return self.getTopK(k-kk,arr1[kk:],arr2)else:return self.getTopK(k-kk,arr1,arr2[kk:])

相关文章:

  • C++ 20新特性之三向比较运算符
  • UG数控编程入门:从基础到精通的全方位指南
  • 一个 python+tensorFlow训练1万张图片分类的简单直观例子( 回答由百度 AI 给出 )
  • 呆滞物料规范管理了,问题就好办了
  • 循环嵌套语句的实际应用(2)
  • 标准价与移动平均价简介
  • 让 AI 写高考作文丨10 款大模型 “交卷”,实力水平如何?
  • Nginx配置负载均衡
  • 近期面试HW中级蓝问题(非常详细)零基础入门到精通,收藏这一篇就够了
  • 计算机组成原理(一)
  • Mac电脑重置网络命令
  • Vue3【十】07使用ref创建基本类型的响应式数据以及ref和reactive区别
  • FM1202,FM020和利时备品
  • Docker的资源限制
  • 6.18云服务器大促盘点,错过一次,再等一年!
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Fabric架构演变之路
  • java 多线程基础, 我觉得还是有必要看看的
  • Javascript Math对象和Date对象常用方法详解
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Markdown 语法简单说明
  • Python学习之路13-记分
  • Swoft 源码剖析 - 代码自动更新机制
  • VUE es6技巧写法(持续更新中~~~)
  • 阿里云购买磁盘后挂载
  • 你真的知道 == 和 equals 的区别吗?
  • 嵌入式文件系统
  • 手写双向链表LinkedList的几个常用功能
  • 网页视频流m3u8/ts视频下载
  • Hibernate主键生成策略及选择
  • MyCAT水平分库
  • 阿里云API、SDK和CLI应用实践方案
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​secrets --- 生成管理密码的安全随机数​
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #HarmonyOS:基础语法
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (9)目标检测_SSD的原理
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (排序详解之 堆排序)
  • (七)Knockout 创建自定义绑定
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十八)三元表达式和列表解析
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)大型网站架构演变和知识体系
  • (转)平衡树
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .java 9 找不到符号_java找不到符号
  • .NET CF命令行调试器MDbg入门(一)