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

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

目录

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


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

1- 思路

题目识别

  • 识别1 :给定两个数组 nums1nums2 ,找出数组的中位数

二分

思路

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

实现

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

其实现思路在于,始终让 nums1 为元素数量少的数组


2- 实现

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

在这里插入图片描述

class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {// 1. 长度int len1 = nums1.length;int len2 = nums2.length;// 定义 right// 排除奇、偶 影响int left = (len1+len2+1)/2;int right = (len1+len2+2)/2;return ((findK(nums1,0,len1-1,nums2,0,len2-1,left) + findK(nums1,0,len1-1,nums2,0,len2-1,right))*0.5);}public int findK(int[] nums1,int start1,int end1,int[] nums2,int start2,int end2,int k){// 始终让 nums2 最长int len1 = end1 - start1+1;int len2 = end2 - start2+1;if(len1>len2) return findK(nums2,start2,end2,nums1,start1,end1,k);// 判断if(len1==0) return nums2[start2+k-1];if(k == 1) return Math.min(nums1[start1],nums2[start2]);// 递归逻辑int i = start1 + (Math.min(len1,k/2)-1);int j = start2 + (Math.min(len2,k/2)-1);if(nums1[i] > nums2[j]){return findK(nums1,start1,end1,nums2,j+1,end2,k-(j-start2+1));}else{return findK(nums1,i+1,end1,nums2,start2,end2,k-(i-start1+1));}}
}

3- ACM 实现

public class findM {public static double findMid(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 ((findK(nums1,0,len1-1,nums2,0,len2-1,left) + findK(nums1,0,len1-1,nums2,0,len2-1,right))*0.5);}private static double findK(int[] nums1,int start1,int end1,int[] nums2,int start2,int end2,int k){// 递归终止int len1 = end1 - start1 + 1;int len2 = end2 - start2 + 1;if(len1>len2) return findK(nums2,start2,end2,nums1,start1,end1,k);// 终止if(len1==0) return nums2[start2+k-1];if(k == 1) return Math.min(nums1[start1],nums2[start2]);// 递归int i = start1 + (Math.min(len1,k/2)-1);int j = start2 + (Math.min(len2,k/2)-1);if(nums1[i] > nums2[j]){return findK(nums1,start1,end1,nums2,j+1,end2,k - (j-start2+1));}else{return findK(nums1,i+1,end1,nums2,start2,end2,k-(i-start1+1));}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();input = input.replace("[","").replace("]","");String input2 = sc.nextLine();input2 = input2.replace("[","").replace("]","");String[] parts = input.split(",");int[] nums = new int[parts.length];for(int i = 0 ; i < nums.length;i++){nums[i] = Integer.parseInt(parts[i]);}String[] parts2 = input2.split(",");int[] nums2 = new int[parts.length];for(int i = 0 ; i < nums2.length;i++){nums2[i] = Integer.parseInt(parts2[i]);}System.out.println("结果是"+findMid(nums,nums2));}
}

相关文章:

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

目录 1- 思路题目识别二分 2- 实现⭐4. 寻找两个正序数组的中位数——题解思路 3- ACM 实现 原题链接&#xff1a;4. 寻找两个正序数组的中位数 1- 思路 题目识别 识别1 &#xff1a;给定两个数组 nums1 和 nums2 &#xff0c;找出数组的中位数 二分 思路 将寻找中位数 —…...

【LLM text2sql】浅看大模型用于text2sql的综述

前言 之前笔者分享了text2sql & LLM & KG的有机结合实现KBQA的问答&#xff0c; 《【LLM & RAG & text2sql】大模型在知识图谱问答上的核心算法详细思路及实践》、 《【开源分享】KBQA核心技术及结合大模型SPARQL查询生成问答实践》。 我们再来看看大模型在te…...

Node js介绍

目录 概要**对Node的认识****Node的概念理解****Node和浏览器区别****Node的架构图** **Node的应用场景****Node的安装****安装Node的LTS版本****Node的版本管理工具nvm(了解)** **Node的输入和输出**Node程序传递参数Node的输出 **Node的全局对象****特殊的全局对象****其他的…...

企业编辑抖音百科词条有什么用?

企业编辑抖音百科词条有什么用&#xff1f; 百科词条创建对企业&#xff0c;品牌以及个人的重要性&#xff01;#百科词条创建#百科营销#百科词条费用# 企业编辑百科词条主要是有以下这些好处&#xff0c;首先是丰富企业在网络上的信息&#xff0c;提高企业的知名度。 百科词条…...

数据结构-链式二叉树-四种遍历

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【数据结构】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 数据结构-链式二叉树-四种遍历 1.前言2.前、中、后序遍历2.1前序遍历2.1中、后序遍历 3.层序遍历3.1递归实现3.2队列实现关于在Pop之后为什么还能用tmp访问节点&#x…...

【YashanDB知识库】数据库获取时间和服务器时间不一致

本文转自YashanDB官网&#xff0c;具体内容可见数据库获取时间和服务器时间不一致 【问题分类】功能使用 【关键字】服务器时间、数据库时间 【问题描述】数据库获取的时间和服务器时间不一致。 【问题原因分析】YashanDB并没有时区的概念&#xff0c;数据库的时间以数据库启…...

十大排序之:冒泡排序

目录 一、简介 实现过程 时间复杂度 二、代码实现 函数声明 Swap函数 单趟 多趟 测试 优化 一、简介 冒泡排序是一种简单的排序算法&#xff0c;它重复地比较相邻的两个元素&#xff0c;如果顺序错误就交换它们&#xff0c;直到没有元素需要交换为止。这个过程类…...

【MPC】无人机模型预测控制复现Data-Driven MPC for Quadrotors项目(Part 1)

无人机模型预测控制复现Data-Driven MPC for Quadrotors项目 参考链接背景和问题方法与贡献实验结果安装ROS创建工作空间下载RotorS仿真器源码和依赖创建Python虚拟环境下载data_driven_mpc仓库代码下载并配置ACADO求解器下载并配置ACADO求解器的Python接口下载并配置rpg_quadr…...

微信小程序开发——比较两个数字大小

在这里我们使用的工具是 需要自行安装和配置。 在微信小程序中比较两个数字大小有以下几种方式&#xff1a; 一、普通条件判断 在小程序的.js 文件中&#xff0c;先定义两个数字&#xff0c;如let num1 5; let num2 3;。通过if - else if - else语句&#xff0c;根据num1与…...

Java多线程3

1.有序性在并发编程中的含义。 有序性在并发编程中指的是在多线程环境下&#xff0c;程序的执行顺序应与单线程情况下保持一致&#xff0c;以避免出现不确定或错误的执行结果。 2.为何需要使用多线程进行程序设计&#xff1f; 使用多线程可以提高程序的效率&#xff0c;利用…...

node+Vue项目环境创建

nodeVue项目环境创建 使用淘宝镜像源使用官方镜像源()清除缓存取消取消ssl验证安装vue 使用淘宝镜像源 npm config set registry https://registry.npm.taobao.org/使用官方镜像源() 由于国内网络问题&#xff0c;安装报错 npm install -g cnpm --registryhttps://registry.…...

云智AI人工智能平台——与众不同之处

人工智能领域、深度学习、强化学习、大小模型盛行的时代&#xff0c;人工智能技术正以前所未有的速度改变着我们的世界。然而&#xff0c;在众多AI平台中&#xff0c;如何选择一个既高效又灵活的工具&#xff0c;成为了每个开发者心中的难题。今天&#xff0c;我们特别介绍一款…...

国庆节有什么好物值得入手?精选国庆节必选好物合集

一年一度的国庆节马上来临了&#xff0c;平时舍不得买的好物可以在国庆节这段时间大采购了&#xff0c;毕竟这可是年度购物的好时机&#xff0c;千万不要错过这个享受优惠的机会。还不知道买什么国庆节好物的朋友可以看看本篇文章&#xff0c;提前做好功课噢&#xff01; 好物…...

并发安全与锁

总述 这篇文章&#xff0c;我想谈一谈自己对于并发变成的理解与学习。主要涉及以下三个部分&#xff1a;goroutine&#xff0c;channel以及lock 临界区 首先&#xff0c;要明确下面两组概念 并发和并行 并行&#xff1a;指几个程序每时每刻都同时进行 并发&#xff1a;指…...

细胞分裂检测系统源码分享

细胞分裂检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...

openssl 生成多域名 多IP 的数字证书

openssl.cnf 文件内容&#xff1a; [req] default_bits 2048 distinguished_name req_distinguished_name copy_extensions copy req_extensions req_ext x509_extensions v3_req prompt no [req_distinguished_name] countryName CN stateOrProvinceName GuangDong l…...

电影评论|基于springBoot的电影评论网站设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取&#xff1a; 一、摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c…...

【C++】虚函数

一、什么是虚函数 在类的成员函数前加上virtual关键字&#xff0c;这个函数就是虚函数。 虚函数的所用就是完成多态。多态示例如下&#xff1a; class A {public:virtual void func()//虚函数{cout << "A" << endl;}void ftwo()//普通函数{cout <&…...

esxi虚拟机启用cbt备份(增量备份)

在虚拟机中启用CBT 1.关闭虚拟机。 右键点按虚拟机&#xff0c;Edit Settings-VM Options-Advanced-Configuration Parameters-Edit Configuration- Add parameters&#xff0c;添加ctkEnabled参数&#xff0c;并将其值设置为true。 Add parameters&#xff0c;添加scsi0:0…...

mysql 8.0 时间维度表生成(可运行)

文章目录 mysql 8.0 时间维度表生成实例时间维度表的作用时间维度表生成技术细节使用时间维度表的好处 mysql 8.0 时间维度表生成实例 时间维度表的作用 dim_times&#xff08;时间维度表&#xff09;在数据仓库&#xff08;Data Warehouse&#xff09;中的作用至关重要。作为…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...