【CT】LeetCode手撕—4. 寻找两个正序数组的中位数

目录

  • 题目
  • 1- 思路
  • 2- 实现
    • ⭐4. 寻找两个正序数组的中位数——题解思路
  • 3- ACM 实现


题目

  • 原题连接:4. 寻找两个正序数组的中位数

1- 思路

思路

  • 将寻找中位数 ——> 寻找两个合并数组的第 K 大 (K代表中位数)

实现

  • ① 遍历两个数组 :通过比较两个数组的第 [k/2] 个元素 ,如果 numsA[k/2] < numsB[k/2] 的时候,删除 numsA 的前半部分元素。
  • ② 找剩余的 k/2 个元素

2- 实现

⭐4. 寻找两个正序数组的中位数——题解思路

在这里插入图片描述

class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {// 定义 int n = nums1.length;int m = nums2.length;// 用来将 奇数长度 和 偶数长度合并int left = (n+m+1)/2;int right = (n+m+2)/2;return (getKth(nums1,0,n-1,nums2,0,m-1,left)+getKth(nums1,0,n-1,nums2,0,m-1,right))*0.5;}public int getKth(int[] nums1,int start1,int end1,int[] nums2,int start2,int end2,int k){int len1 = end1-start1+1;int len2 = end2-start2+1;// 始终让 len1 < len2if(len1>len2) return getKth(nums2,start2,end2,nums1,start1,end1,k);// 1. 递归终止条件if(len1 == 0 ) return nums2[start2+k-1];if(k==1) return Math.min(nums1[start1],nums2[start2]);// 2. 递归逻辑// 2.1 更新start用于递归:保证尽可能不越界 int i = start1 + Math.min(len1,k/2) -1;int j = start2 + Math.min(len2,k/2) -1;// 2.2 删除逻辑if(nums1[i] > nums2[j]){return getKth(nums1,start1,end1,nums2,j+1,end2,k-(j - start2 + 1));}else{return getKth(nums1,i+1,end1,nums2,start2,end2,k-(i-start1+1));}}
}

3- ACM 实现


public class midNum {public static double twoNumMid(int[] nums1,int[] nums2){int len1 = nums1.length;int len2 = nums2.length;int left = (len1+len2+1)/2;int right = (len1+len2+2)/2;return (getKth(nums1,0,len1-1,nums2,0,len2-1,left)+getKth(nums1,0,len1-1,nums2,0,len2-1,right))*0.5;}// 递归public static int getKth(int[] nums1,int start1,int end1,int[] nums2,int start2,int end2,int k){// 找lenint len1 = end1-start1+1;int len2 = end2-start2+1;if(len1>len2) return getKth(nums2,start2,end2,nums1,start1,end1,k);// 2. 终止条件if(len1 == 0) return nums2[start2+k-1];if(k == 1) return Math.min(nums1[start1],nums2[start2]);// 3.单层递归int i = start1 + Math.min(k/2,len1)-1;int j = start2 + Math.min(k/2,len2)-1;// 删 nums2if(nums1[i]>nums2[j]){return getKth(nums1,start1,end1,nums2,j+1,end2,k-(j-start2+1));}else{return getKth(nums1,i+1,end1,nums2,start2,end2,k-(i-start1+1));}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入数组1的长度");int n = sc.nextInt();int[] nums1 = new int[n];System.out.println("输入数组1元素");for(int i = 0 ; i < n ; i ++){nums1[i] = sc.nextInt();}System.out.println("输入数组2的长度");int m = sc.nextInt();int[] nums2 = new int[m];System.out.println("输入数组2元素");for(int j = 0 ; j < m;j++){nums2[j] = sc.nextInt();}double res = twoNumMid(nums1,nums2);System.out.println("中位数是"+res);}
}

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

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

相关文章

企业级监控系统Zabbix

文章目录 Zabbix介绍Zabbix架构Zabbix serverZabbix agentZabbix proxy Zabbix Server的安装Zabbix Agent的安装监控主机流程zabbix_get自定义模板和监控项实战用户登录数监控1.指定监控项命令2.重启Agent服务3.在Server上创建监控项4.测试监控项5.查看监控项图形 触发器定义触…

外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——4.预后相关外泌体基因确定单因素cox回归(2)

内容如下&#xff1a; 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的…

香橙派 AIpro 根据心情生成专属音乐

香橙派 AIpro 根据心情生成专属音乐 一、OrangePi AI pro 开发版参数介绍1.1 接口简介1.2 OrangePi AI pro 的Linux系统功能适配情况1.3 开发板开机1.4 远程连接到 OrangePi AIpro 二、开发环境搭建2.1 创建环境、代码部署文件夹2.2 安装 miniconda2.3 为 miniconda 更新国内源…

生态系统NPP及碳源、碳汇模拟技术教程

原文链接&#xff1a;生态系统NPP及碳源、碳汇模拟技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608293&idx3&sn2604c5c4e061b4f15bb8aa81cf6dadd1&chksmfa826602cdf5ef145c4d170bed2e803cd71266626d6a6818c167e8af0da93557c1288da21a71&a…

【综合能源】计及碳捕集电厂低碳特性及需求响应的综合能源系统多时间尺度调度模型

目录 1 主要内容 2 部分程序 3 实现效果 4 下载链接 1 主要内容 本程序是对《计及碳捕集电厂低碳特性的含风电电力系统源-荷多时间尺度调度方法》方法复现&#xff0c;非完全复现&#xff0c;只做了日前日内部分&#xff0c;并在上述基础上改进升级为电热综合电源微网系统&…

vue+openlayers之几何图形交互绘制基础与实践

文章目录 1.实现效果2.实现步骤3.示例页面代码3.基本几何图形绘制的关键代码 1.实现效果 绘制点、线、多边形、圆、正方形、长方形 2.实现步骤 引用openlayers开发库。加载天地图wmts瓦片地图。在页面上添加几何图形绘制的功能按钮&#xff0c;使用下拉列表&#xff08;sel…

基于JavaScript、puppeteer的爬虫

前期准备: npm puppeteer import puppeteer from puppeteer; puppeteer文档 第一步&#xff1a;启动浏览器&#xff0c;跳转到需要爬取的页面 const browser await puppeteer.launch({ headless: false });const page await browser.newPage();await page.goto(url, { w…

【目标检测实验系列】YOLOv5模型改进:引入轻量化多维动态卷积ODConv,减少计算量的同时保持精度稳定或略微上涨!(内含源代码,超详细改进代码流程)

1. 文章主要内容 本篇博客主要涉及轻量化多维动态卷积ODConv&#xff0c;融合到YOLOv5模型中&#xff0c;减少计算量的同时保持精度稳定或略微上涨。&#xff08;通读本篇博客需要7分钟左右的时间&#xff09;。 2. 介绍 ODconv沿着空间、输入通道、输出通道以及卷积核空间的核…

领导被我的花式console.log吸引了!直接写入公司公共库!

背景简介 这几天代码评审,领导无意中看到了我本地代码的控制台,被我花里胡哨的console打印内容吸引了! 老板看见后,说我这东西有意思,花里胡哨的,他喜欢! 但是随即又问我,这么花里胡哨的东西,上生产会影响性能吧?我自信的说:不会,代码内有判断的,只有开发环境会…

14270-02G 同轴连接器

型号简介 14270-02G是Southwest Microwave的2.4 mm 同轴连接器。这款连接器连接器采用不锈钢、铍铜合金、黄铜合金和 ULTEM 1000 等高质量材料&#xff0c;可能具有更好的耐腐蚀性、导电性和机械强度。金镀层可以提供更低的接触电阻和更好的耐腐蚀性。 型号特点 电缆的中心导体…

健康课程知识培训小程序网站如何学员教务管理

医学专业学生或是从业医生、护士等都需要不断学习巩固自己的技术和拓宽知识面&#xff0c;除了主要学习来源外&#xff0c;培训机构课程需求也是提升自身实力的方法&#xff0c;市场中也存在不少医药健康内容培训机构或是医院内部员工培训等。 运用雨科平台搭建医药健康内容培…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子&#xff0c;由里到外&#xff0c;盒模型包括外边界&#xff08;margin&#xff09;、边框&#xff08;border&#xff09;、内边界&#xff08;padding&#xff09;和内容&#xff08;content&#xff09;。 盒模型基本分为3种&#xff1…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本&#xff0c;环境&#xff1a;k8s版本为&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

智慧消防视频监控烟火识别方案,筑牢安全防线

一、方案背景 在现代化城市中&#xff0c;各类小型场所&#xff08;简称“九小场所”&#xff09;如小餐馆、小商店、小网吧等遍布大街小巷&#xff0c;为市民生活提供了极大的便利。然而&#xff0c;由于这些场所往往规模较小、人员流动性大、消防安全意识相对薄弱&#xff0…

vue配置sql规则

vue配置sql规则 实现效果组件完整代码父组件 前端页面实现动态配置sql条件&#xff0c;将JSON结构给到后端&#xff0c;后端进行sql组装。 这里涉及的分组后端在组装时用括号将这块规则括起来就行&#xff0c;分组的sql连接符&#xff08;并且/或者&#xff09;取组里的第一个。…

【Linux】Linux常用指令合集精讲,一篇让你彻底掌握(万字真言)

文章目录 一、文件与目录操作1.1 ls - 列出目录内容1.2 cd - 切换目录1.3 pwd - 显示当前目录1.4 mkdir - 创建目录1.5 rmdir - 删除空目录1.6 rm - 删除文件或目录1.7 cp - 复制文件或目录1.8 mv - 移动或重命名文件或目录1.9 touch - 创建空文件或更新文件时间戳 二、文件内容…

Vue 详情实战涉及从项目初始化到功能实现、测试及部署的整个过程

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

《操作系统真象还原》学习笔记:第2章——编写MBR主引导记录

2.1 计算机的启动过程 载入内存&#xff1a; &#xff08;1&#xff09; 程序被加载器&#xff08;软件或硬件&#xff09;加载到内存某个区域 &#xff08;2&#xff09;CPU 的 cs:ip 寄存器被指向这个程序的起始地址 2.2 软件接力第一棒&#xff0c;BIOS 2.2.1 实模式下的…

Jenkins 使用 Publish over SSH进行远程访问

Publish over SSH 是 Jenkins 的一个插件,可以让你通过 SSH 将构建产物分发到远程服务器。以下是如何开启 Publish over SSH 的步骤: 一、安装 Publish over SSH 插件 在 Jenkins 中,进入 "Manage Jenkins" > "Manage Plugins"。选择 "Availab…

怎么用AI合成PPT?这5款风靡全球的AIPPT软件一定要知道!

当下我们已进入信息过载的时代&#xff0c;每天有无数的信息试图争夺我们的注意力&#xff0c;与此同时&#xff0c;我们也需要向别人展示和呈现信息&#xff0c;这就要求我们能够以最低的成本&#xff0c;在短时间内引起对方的注意&#xff0c;这其中最常用到的工具非PPT莫属。…