leetCode算法—4.寻找两个正序数组的中位数

1.给定两个大小分别为 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

提示:

nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106

2.解法

export const findMedianSortedArrays = function (nums1, nums2) {//保证nums1长度小于nums2,因为他们的分隔线位置互相影响if (nums1.length > nums2.length) {[nums1, nums2] = [nums2, nums1];}//取长度let m = nums1.length, n = nums2.length;//在0~m区域let left = 0, right = m;//暂存左半段的最大值,右半段的最小值let median1 = 0, median2 = 0;while (left <= right) {//找nums1这里的中位线作为分隔线const i = left + Math.floor((right - left) / 2);//想象两个数组合并成一个新数组的总长度取中位线 - 左半段的分隔线,就是右半段分隔线的初始位置const j = Math.floor((m + n + 1) / 2) - i;//判断特殊情况,比如num1的中位线就是在下标0处,那么这分隔线也就缺乏意义了。const maxLeft1 = i === 0 ? -Infinity : nums1[i - 1];const minRight1 = i === m ? Infinity : nums1[i];const maxLeft2 = j === 0 ? -Infinity : nums2[j - 1];const minRight2 = j === n ? Infinity : nums2[j];console.log({ i, j, maxLeft1, minRight1, maxLeft2, minRight2 })//不停通过二分查找调整分隔线的位置,直到找到对应的数组,然后取中间值if (maxLeft1 <= minRight2) {median1 = Math.max(maxLeft1, maxLeft2);median2 = Math.min(minRight1, minRight2);left = i + 1;} else {right = i - 1;}console.log({ median1, median2 })}return (m + n) % 2 == 0 ? (median1 + median2) / 2 : median1;
};

欢迎大家给出更好的解法!!!
上一篇:leetCode算法—3.无重复字符的最长子串
下一篇:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博士毕业需要发表几篇cssci论文

大家好&#xff0c;今天来聊聊博士毕业需要发表几篇cssci论文&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 博士毕业需要发表几篇CSSCI论文 背景介绍 CSSCI即“中文社会科学引文索引”&#xff0c;被…

纯生信轻松拿下5+分文。铜死亡+免疫浸润+预后模型,快学起来吧

今天给同学们分享一篇生信文章“A novel defined risk signature of cuproptosis-related long non-coding RNA for predicting prognosis, immune infiltration, and immunotherapy response in lung adenocarcinoma”&#xff0c;这篇文章发表在Front Pharmacol期刊上&#x…

克服自卑心理,建立自信心的方法

自卑在初期往往是被我们忽视的......可是这种情绪持续发展下去&#xff0c;得不到及时的调整&#xff0c;便会出现极大的危害&#xff0c;会导致多种心理疾病。避免自卑、避免心理健康问题&#xff0c;需要我们及时发觉&#xff0c;及时改善.... 1、运用性格分析的方法初步了解…

图像去噪算法

图像去噪是图像处理领域的一个重要任务&#xff0c;有许多不同的方法可以用来降低图像中的噪声。以下是一些常见的图像去噪方法&#xff1a; 中值滤波&#xff08;Median Filtering&#xff09;&#xff1a; 中值滤波是一种简单而有效的去噪方法。它使用一个滑动窗口&#xff…

利用vue指令解决权限控制问题

使用场景&#xff1a;在我们的系统中&#xff0c;有的用户有创建权限&#xff0c;有的用户没有创建权限。 分析&#xff1a;后端一般会在登录完成后将该用户的权限资源列表一次性返回给前端&#xff0c;因此&#xff0c;可以先把权限资源列表保存在vuex&#xff08;pinia&…

宝塔面板快速搭建本地网站结合内网穿透实现远程访问【无需公网IP】

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

稀有气体行业分析:预计2029年将达到492亿元

稀有气体或惰性气体是指元素周期表上的18族元素(IUPAC新规定&#xff0c;即原来的0族)。在常温常压下&#xff0c;它们都是无色无味的单原子气体&#xff0c;很难进行化学反应。天然存在的稀有气体有六种&#xff0c;即氦(He)、氖(Ne)、氩(Ar)、氪(Kr)、氙(Xe)和具放射性的氡(R…

【深度学习目标检测】三、基于深度学习的人物摔倒检测(python,yolov8)

深度学习目标检测方法则是利用深度神经网络模型进行目标检测&#xff0c;主要有以下几种&#xff1a; R-CNN系列&#xff1a;包括R-CNN、Fast R-CNN、Faster R-CNN等&#xff0c;通过候选区域法生成候选目标区域&#xff0c;然后使用卷积神经网络提取特征&#xff0c;并通过分类…

基于ssm点餐平台系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本点餐平台系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

解决App Store上架提示您必须上传 12.9 英寸 iPad Pro(第 2 代)显示屏的截屏

出错场景 在App Store Connect中&#xff0c;上架App时&#xff0c;出现以下错误提示. 要开始审核流程&#xff0c;必须提供以下项目&#xff1a;您必须上传 12.9 英寸 iPad Pro&#xff08;第 2 代&#xff09;显示屏的截屏。&#xff08;2048&#xff0c;2732&#xff09;您…

LiteClient工具箱:降低成本,减少监管风险

​​发表时间&#xff1a;2023年9月14日 BSV区块链协会的工程团队一直在为即将推出的LiteClient而努力工作&#xff0c;这是一套模块化的组件&#xff0c;可使简易支付验证&#xff08;SPV&#xff09;变得更加便利。 借助LiteClient工具箱&#xff0c;交易所可以通过区块头中…

OpenCvSharp从入门到实践-(07)绘制图形

目录 1、线段的绘制 1.1实例1-绘制线段拼成一个"王"字 2、矩形的绘制 2.1实例2-绘制一个矩形边框 2.2实例3-绘制一个实心矩形 3、圆的绘制 3.1实例4-绘制"交通灯" 4、多边形绘制 4.1实例5-绘制等腰梯形 5、文字的绘制 5.1实例6-绘制文字OpenCvS…

Java 在 hibernate 中使用 Integer 和 int 做映射有什么区别?

Java 在 hibernate 中使用 Integer 和 int 做映射有什么区别&#xff1f; 在 Hibernate 中&#xff0c;使用 Integer 和 int 做映射的主要区别在于处理 null 值的能力以及默认值。下面是一些说明和示例代码&#xff1a; 使用 Integer&#xff1a; 能够表示 null 值&#xff1…

数据分析为何要学统计学(7)——什么问题适合使用t检验?

t检验&#xff08;Students t test&#xff09;&#xff0c;用于通过小样本&#xff08;样本容量n < 30&#xff09;对总体均值水平进行无差异推断。 t检验要求样本不能超过两组&#xff0c;且每组样本总体服从正态分布&#xff08;对于三组以上样本的&#xff0c;要用方差…

基于飞书的webhook功能实现对gitlab的事件通知并@具体成员(二)

在上一篇 基于飞书群智能助手从gitlab中获取信息并具体成员&#xff08;一&#xff09;详细讲解了基于飞书群智能助手私信成员的姿势&#xff0c;那接下来为大家介绍通过webhook也可以作为私信成员。 文章目录 1. 基于飞书的webhook功能1.1 创建工作流1.2 gitlab中创建webhook1…

速学数据结构 | 树 森林 二叉树 的概念详讲篇

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! &#x1f4cb; 前言 &#x1f308;hello&#xff01; 各位宝子们大家好啊&#xff0c;关于线性表我们已经在前面更新完了…

学生管理系统 数据库版

1.写SQL语句 创建school_java数据库 创建student数据表包含 id、name姓名、tel电话、sex性别字段 往student表中加10条数据 2.写Java代码&#xff08;要求只用PreparedStatement对象&#xff0c;变化的值都用?代替&#xff09; 查询student表中所有学生信息 student表中新增三…

一把烂牌打成王炸:2024 新加坡国立大学 (NUS,QS排名第8,CS 排名第 6) 计算机科学全奖博士的申请心得

最近被 NUS 的 CS 全奖录取了 phd&#xff0c;所以在 b 站上分享了一下自己的详细申请经验&#xff0c;希望大家都来捧场呀&#xff01;&#xff01;&#xff01; 还有就是如何套词 Research Assistant&#xff01;&#xff01;大家有疑惑的快来看&#xff01;&#xff01;&am…

EasyExcel处理表头的缓存设置

在学习EasyExcel 时会发现针对使用类模型配置表头相关属性时&#xff0c;EasyExcel 会使用到缓存技术以提升表头的解析速度如下代码&#xff1a; 这些参数再何时设置的哪&#xff1f; 在easyExcel 基础参数设置中会有这个参数filedCacheLocation 。默认采用的使用线程级别的…

前端登录界面网站设计模板--HTML+CSS

🎀登录表单 💖效果展示 💖HTML代码展示 <!DOCTYPE html> <html lang="en" > <head></