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

python-leetcode 67.寻找两个正序数组中的中位数

题目:

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请找出并返回这两个正序数组的中位数。


通过双指针和二分查找的思想,找到两个有序数组的中位数。

1.初始化和基本情况处理

首先获取两个个数组的长度m和n,计算总长度total=m+n

定义一个辅助函数,用于找到两个数组合并后的第k小的元素

2.寻找第k小的元素

使用双指针i和j分别遍历nums[i]和nums[j]

边界条件处理:

如果i到达nums1的末尾,返回nums2中从j开始的第k个元素

如果j到达nums2的末尾,则返回nums1中从i开始的第k个元素。

如果k==1,则返回nums[i]和nums[j]中较小的值

二分查找:

计算mid=k//2,并确定两个数组中的比较位置new_i和new_j

比较nums1[new_i]和nums2[new_j],如果nums1[new_i]<=nums2[new_j],说明nums1的前mid个元素可以排除,他们不可能是第k小的元素,因此更新,i和j

否则,排除nums2的前mid个元素,更新j和k

3.计算中位数

奇数长度:如果total是奇数,直接返回第total+1//2小的元素

偶数长度:如果total是偶数,就返回第total//2和total.//2+1的平均值

class Solution(object):def findMedianSortedArrays(self, nums1, nums2):""":type nums1: List[int]:type nums2: List[int]:rtype: float"""m,n=len(nums1),len(nums2) #计算两个数组的长度total=m+n  #两个数组长度的总和def findKthElement(k): #在两个有序数组中找到第 k 小的元素i,j=0,0  #初始化两个指针i和j,分别用于跟踪nums1和nums2 的当前位置while True:if i==m:return nums2[j+k-1]#如果nums1已经全部被排除i == m,则k小的元素在nums2 中,位置是j + k - 1if j==n:return nums1[i+k-1]#如果nums2已经全部被排除j == n,则 k小的元素在 nums1 中,位置是i + k - 1if k==1:  # k 减到 1,说明要找最小的元素return min(nums1[i],nums2[j])mid=k//2  #当前 k 的一半new_i=min(i+mid-1,m-1)#ew_i 是 nums1 中从当前位置 i 开始,向后移动 mid-1 个位置,但不能超过数组长度new_j=min(j+mid-1,n-1)   #同理if nums1[new_i]<=nums2[new_j]: #nums1的前new_i - i + 1 个元素可以安全排除k-=new_i-i+1  #减去排除的元素数量i=new_i+1else:k-=new_j-j+1 #排除 nums2 的前 new_j - j + 1 个元素j=new_j+1if total%2==1: #合并后数组长度是奇数,直接返回中间的那个元素(第 (total+1)/2 小的元素)return findKthElement((total+1)//2)else:  #合并后数组长度是偶数,返回中间两个元素的平均值left=findKthElement(total//2)right=findKthElement(total//2+1)return (left+right)/2.0

时间复杂度:O(log(min,m,n))).每次k会减半

空间复杂度:O(1)

相关文章:

python-leetcode 67.寻找两个正序数组中的中位数

题目&#xff1a; 给定两个大小分别为m和n的正序&#xff08;从小到大&#xff09;数组nums1和nums2。请找出并返回这两个正序数组的中位数。 通过双指针和二分查找的思想&#xff0c;找到两个有序数组的中位数。 1.初始化和基本情况处理 首先获取两个个数组的长度m和n,计算…...

Python 实现图片浏览和选择工具

实现将截图预览&#xff0c;并按照顺序加入一个pdf文件中&#xff0c;实现照片管理尤其对于喜欢看教程截图做笔记的网友们。 C:\pythoncode\new\python-image-pdf-processor.py 界面展示 &#x1f9f1; 一、核心结构概述 主类 ImageViewer(wx.Frame) 是主窗口类&#xff0c;…...

V4L2应用程序开发-01数据采集流程

1 数据采集流程 可以参考这些文件&#xff1a; mjpg-streamer\mjpg-streamer-experimental\plugins\input_control\input_uvc.c video2lcd\video\v4l2.c Video for Linux two(Video4Linux2)简称V4L2&#xff0c;是V4L的改进版。V4L2支持三种方式来采集图像&#xff1a;内存…...

TDengine 2025年产品路线图

TDengine OSS 之 2025 年年度路线图如下表所示。 季度功能2025Q1 虚拟表查询能力&#xff1a;REGEXP、GREATEST、LEAST、CAST 函数支持判断表达式、单行选择函数的其他列值、INTERP 支持插值时间范围存储能力&#xff1a;支持将查询结果写入超级表、超级表支持 KEEP 参数、STM…...

Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览

文章目录 前言SceneCaptureComponent2D实现步骤新建渲染目标新建材质UI控件激活3DPreview鼠标拖动旋转模型最后前言 我们在(电商展示/角色预览/装备查看)等应用场景中,经常会看到这种3D展示的页面。 即使用相机捕获一个3D的模型的视图,然后把这个视图显示在一个UI画布上,…...

windows服务器部署jenkins工具

sjenkins作为一款构建发布工具&#xff0c;极大的简化了大家项目部署发布流程。jenkins通常是部署在linux服务上&#xff0c;今天给大家分享的是windows服务器上如何搭建jenkins发布工具。 1.首先第一步还是看windows安装docker 这篇文章哈&#xff0c;当然也可以不采用docker…...

Java—— File详解

说明 File对象就表示一个路径&#xff0c;可以是文件的路径、也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也允许是不存在的 获取File对象 方法名称说明public File(String pathname)根据文件路径创建文件对象public File(String parent,String child)根据父路径名…...

「NameCraft · 幻想命名器」开发记:我和 CodeBuddy 的一次奇幻共创之旅

起心动念&#xff1a;我想做一个不一样的名字生成器 最近我有一个脑洞&#xff1a;能不能做一个风格化强烈的名字生成器&#xff1f;不要那种平平无奇的「小明、小红」类型&#xff0c;而是支持「幻想风」「武侠感」「赛博感」的那种&#xff0c;最好还有高颜值的 UI&#xff…...

03 接口自动化-精通Postman之接口鉴权,接口Mock,接口加解密以及接口签名Sign

文章目录 一、接口鉴权&#xff08;鉴定是否有访问接口的权限&#xff09;1、cookie&#xff0c;session&#xff0c;token鉴权。2、Postman的鉴权方式 二、接口Mock Sersver三、接口的加解密四、接口签名sign&#xff08;接口鉴权的一种&#xff09;1.什么是接口签名&#xff…...

深入浅出IIC协议 -- 第二篇:FPGA数字接口设计方法论

第二篇&#xff1a;FPGA数字接口设计方法论 副标题 &#xff1a;从状态机到跨时钟域——打造工业级I2C控制器的设计密码 1. 状态机设计黄金法则 1.1 状态机类型抉择 Mealy与Moore对比实验 &#xff1a; 类型输出依赖时序特性I2C适用场景Moore仅当前状态延迟稳定协议主状态控…...

20250519使用TF卡将NanoPi NEO core开发板刷机为Ubuntu core22.04.3系统完成之后执行poweroff自动关机

1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区&#xff0c;可以使用SD Card Formatter/SDCardFormatterv5_WinE…...

什么是USB的EHCI和OHCI

USB的EHCI和OHCI是两种不同的主机控制器接口标准&#xff0c;用于规范计算机如何通过硬件和软件与USB设备通信。它们分别对应不同的USB协议版本和设备类型&#xff0c;以下是详细解析&#xff1a; 1. OHCI&#xff08;Open Host Controller Interface&#xff09; • 定位&…...

【2025最新版】Origin安装教程 - 超详细Origin2024中文版图文教程(保姆级附带Origin安装包)

文章目录 前言Origin安装前的必要准备Origin安装包获取Origin安装图文步骤第一步&#xff1a;解压安装包第二步&#xff1a;启动安装程序第三步&#xff1a;安装向导操作第四步&#xff1a;填写注册信息第五步&#xff1a;选择安装位置第六步&#xff1a;功能选择与安装第七步&…...

【网络编程】十二、两万字详解 IP协议

文章目录 Ⅰ. 基本概念1、网络层解决的问题2、保证数据可靠的从一台主机送到另一台主机的前提3、路径选择4、主机和路由器的区别 Ⅱ. IP协议格式IP如何将报头与有效载荷进行分离&#xff1f;IP如何决定将有效载荷交付给上层的哪一个协议&#xff1f;理解socket编程 Ⅲ. 分片与组…...

【机器学习】线性回归和损失函数

线性回归 1.什么是线性回归&#xff1f; 线性回归指的就是将一些输入项乘以相应的权重系数&#xff0c;然后相加得到输出结果。线性回归是机器学习中一种有监督学习的算法,回归问题主要研究的是因变量与一个或多个自变量之间的关系。 在学习线性回归知识之前&#xff0c;我们…...

ip与mac-数据包传输过程学习

你管这破玩意叫网络&#xff1f; 内容来源于飞天闪客&#xff0c;以前没有学习过网络的相关基础知识&#xff0c;只会去瞎设置&#xff0c;现在终于是弄明白了。 多台电脑之间想要通信&#xff0c;可以直接通过一条网线进行连接。但是随着网线的增加&#xff0c;这个就会比较…...

【Qwen开源】WorldPM: 扩展人类偏好建模

受语言建模中的缩放定律启发&#xff0c;该定律展示了测试损失如何随着模型和数据集的规模呈幂律关系扩展&#xff0c;我们发现类似的定律也存在于偏好建模中。我们提出了世界偏好建模&#xff08;WorldPM&#xff09;来强调这种扩展潜力&#xff0c;其中世界偏好体现了人类偏好…...

如何设计一个二级缓存(Redis+Caffeine)架构?Redis 6.0多线程模型如何工作?

一、二级缓存&#xff08;RedisCaffeine&#xff09;架构设计 1. 设计目标 通过「本地缓存&#xff08;Caffeine&#xff09; 分布式缓存&#xff08;Redis&#xff09;」的分层结构&#xff0c;实现&#xff1a; 低延迟&#xff1a;热点数据本地缓存&#xff08;内存级访问…...

MYSQL8.0常用窗口函数

MYSQL8.0常用窗口函数 一、窗口函数的基本概念 窗口函数&#xff0c;顾名思义&#xff0c;就是在查询结果集中定义一个“窗口”&#xff0c;在这个窗口内进行数据的计算和分析。与普通聚合函数不同&#xff0c;普通聚合函数会将结果集分组并返回每组的单一汇总值&#xff0c;…...

【Pandas】pandas DataFrame pct_change

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

Model 复现系列(一)OpenVLA

这个系列用来记录一些开源模型在本地部署或测试时遇到的一些坑以及解决方案。 系列第一篇文章给了 OpenVLA&#xff0c;该模型是具身智能与VLA领域的必读模型之一&#xff0c;虽然现在有很多模型号称超越了它&#xff0c;但作为行业的基石仍然有非常高的地位。 项目链接&…...

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器配置版本-v5.2.3-beta+charts图表

最近同事告诉我说要重新部署一套blockscout浏览器,我一想,之前有部署流程文档-《Web3:使用Docker-compose方式部署blockscout浏览器+charts图表》,这不手拿把掐吗。 但还是出现了一些问题,之前服务器系统是centos,现在是Ubuntu系统,而且之前docker镜像也没那么难获取,于…...

ECharts-柱状图

柱状图样式设置 Ⅰ、柱条样式 柱条的样式可以通过 series.itemStyle 设置&#xff0c;包括&#xff1a; 柱条的颜色&#xff08;color&#xff09;&#xff1b;柱条的描边颜色&#xff08;borderColor&#xff09;、宽度&#xff08;borderWidth&#xff09;、样式&#xff…...

理解UDP协议

在计算机网络中&#xff0c;UDP&#xff08;用户数据报协议&#xff09;常被称为“轻量级”传输协议。它不像TCP那样追求可靠传输&#xff0c;而是以简洁高效的设计满足特定场景的需求。本文将带你深入UDP的核心特性、技术细节及其实际应用。 UDP的协议设计​​ UDP协议的核心…...

Web 技术与 Nginx 网站环境部署

这里写目录标题 一. Web基础域名和DNS域名的概念域名的结构域名结构类型 Hosts文件Hosts文件的作用修改Hosts文件 DNS域名注册 网页与HTML网页概述HTML概述HTML基本标签HTML语法规则HTML文件结构 网站和主页Web1.0 与 Web2.0 静态网页与动态网页静态网页动态网页动态网页语言 H…...

分布式天线系统 (DAS, Distributed Antenna System)

1. 概述 分布式天线系统&#xff08;DAS&#xff09; 是一种通过多个分散的天线节点来增强无线信号覆盖和容量的网络架构。它主要用于解决大型建筑、地下设施、体育场馆等场景中的信号盲区或容量不足问题。 2. 主要组成 DAS系统通常包括以下关键组件&#xff1a; 信号源&…...

hexo博客搭建使用

搭建 Hexo 演示主题为&#xff1a;Keep 使用 文章 创建新文章 ➜ zymore-blog-keep git:(main) ✗ hexo new "告别H5嵌入&#xff01;uniApp小程序文件下载与分享完整解决方案" INFO Validating config INFO Created: ~/Desktop/HelloWorld/zymore-blog-k…...

Git上传项目到GitHub

Git上传项目到GitHub 下载Git客户端配置Git设置GitHub上传本地项目到Github 下载Git客户端 网址&#xff1a;Git Windows客户端。选择Standalone Installer(单独安装程序)&#xff0c;并点击64bit Git for Windows Setup(64位Git for Windows安装程序)进行下载。然后一路默认选…...

隨筆20250519 Async+ThreadPoolTaskExecutor⾃定义线程池进阶实战

1.ThreadPoolTaskExecutor线程池 有哪⼏个重要参数&#xff0c; 什么时候会创建线程 1.核心綫程數 查看核心綫程數目是否已經滿&#xff0c;未滿 創建一條綫程 執行任務&#xff0c;已滿負責執行第二部 2.阻塞隊列 查看阻塞隊列是否已經滿&#xff0c;未滿將任務加入阻塞隊列&…...

YoloV8改进策略:卷积篇|风车卷积|即插即用

文章目录 论文信息论文翻译摘要引言相关研究红外搜索与跟踪检测和分割网络红外搜索与跟踪数据集的损失函数红外搜索与跟踪数据集方法风车形卷积(PConv)基于尺度的动态损失SIRST - UAVB数据集实验实验设置与其他方法的比较多模型上的消融实验结论致谢代码改进方法测试结果总结…...

HGDB中如何为表增加自增主键

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;N/A 版本&#xff1a;4.5 文档用途 本文主要介绍在瀚高数据库中如何为表增加新主键&#xff0c;便于业务改造和查询。 实现原理&#xff1a;通过添加序列自增字段和唯一约束实现。 详细信息 可以根据数字类型来设…...

升级mysql (rpm安装)

#备份以防万一 备份配置文件: /etc/my.cnf.d/server.cnf 备份数据: mysqldump -u your_username -p --all-databases > all_databases.sql #停止 systemctl stop mysql #卸载旧版 yum remove mariadb #安装新版( 通过yum安装报错,死活安装不了,只能rpm安装) 下载地址…...

ALTER COLLATION使用场景

ALTER COLLATION 是 SQL 中用于修改字符集排序规则&#xff08;Collation&#xff09;的操作。排序规则定义了字符数据的比较和排序方式&#xff0c;包括字母顺序、大小写敏感性、重音符号处理等。ALTER COLLATION 的使用场景主要集中在需要调整数据库或表的字符集排序规则时。…...

Python实例题:Python 实现简易 Shell

目录 Python实例题 题目 代码实现 功能说明 基本命令执行&#xff1a; 内置命令&#xff1a; 环境变量&#xff1a; 管道&#xff1a; 重定向&#xff1a; 信号处理&#xff1a; 使用方法 注意事项 Python实例题 题目 Python 实现简易 Shell 代码实现 import o…...

大中型病险水库大坝除险加固监测实施方案

一、方案背景 我国80%以上的水库修建于20世纪50至70年代&#xff0c;经过几十年的运行&#xff0c;大部分水库已超过设计使用年限&#xff0c;功能老化现象较严重&#xff0c;出现病险具有一定的客观性。受超标洪水、强烈地震等自然灾害影响&#xff0c;水库一旦遭遇突发暴雨洪…...

[长城杯 2024]anote

题解前的小吐槽:终于还是狠下心复现了一下长城杯的这个赛题&#xff0c;第一次觉得汇编比函数看的方便&#xff0c;不过这题好写是好写的[心虚](还是看了一些大佬的wp) [长城杯 2024]anote(堆溢出C) [长城杯 2024]anote 1.准备 motalymotaly-VMware-Virtual-Platform:~$ fi…...

verify_ssl 与 Token 验证的区别详解

verify_ssl 与 Token 验证的区别详解 在开发或调用 API 接口时&#xff0c;我们经常会遇到两个看似相关但实际上作用完全不同的安全参数&#xff1a; 传输层的 verify_ssl应用层的 Authorization&#xff08;最常见是 Bearer Token&#xff09; 虽然它们都与“安全”有关&am…...

Python集合

一、Python集合概述 Python集合(set)是一种无序、可变且不包含重复元素的数据结构。集合在Python中通过哈希表实现&#xff0c;这使得它在成员检测和去重操作中具有极高的效率。 集合与列表、元组的主要区别&#xff1a; 无序性&#xff1a;元素没有固定顺序 唯一性&#x…...

容器化-K8s-镜像仓库使用和应用

一、K8s 镜像仓库使用 1、启动镜像仓库 cd/usr/local/harbor ./install.sh2、配置镜像仓库地址 在 master 节点和 slaver 节点上,需要配置 Docker 的镜像仓库地址,以便能够访问本地的镜像仓库。编辑 Docker 的配置文件 vi /etc/docker/daemon.json(如果不存在则创建),添…...

解决报错 Flask-SQLAlchemy TypeError: ‘float‘ object is not callable

Flask-SQLAlchemy TypeError: ‘float’ object is not callable Flask-SQLAlchemy 与 Python 版本兼容性问题解决方案 日期&#xff1a;2025 年 5 月 19 日 分类&#xff1a;后端开发、Python、Flask 标签&#xff1a;Flask-SQLAlchemy, Python 版本兼容&#xff0c;错误修复…...

k8s节点维护的细节

k8s节点维护的细节 Kubernetes&#xff08;k8s&#xff09;节点维护是保障集群稳定运行的重要工作&#xff0c;涉及节点升级、故障排查、资源优化等多个方面。维护步骤和操作命令&#xff1a; 一、节点维护前的准备工作 1. 查看集群状态 kubectl get nodes # 查看所有节点状…...

基于STM32的光照测量报警Proteus仿真设计+程序设计+设计报告+讲解视频

基于STM32的光照测量报警仿真设计 1.**主要功能****2.仿真设计****3.程序设计****4.设计报告****5.下载链接** 基于STM32的光照测量报警仿真设计 (Proteus仿真程序设计设计报告讲解视频&#xff09; 仿真图Proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a;C语…...

Docker 运维管理

Docker 运维管理 一、Swarm集群管理1.1 Swarm的核心概念1.1.1 集群1.1.2 节点1.1.3 服务和任务1.1.4 负载均衡 1.2 Swarm安装准备工作创建集群添加工作节点到集群发布服务到集群扩展一个或多个服务从集群中删除服务ssh免密登录 二、Docker Compose与 Swarm 一起使用 Compose 三…...

五分钟本地部署大模型

前提&#xff1a;个人PC机&#xff0c;配置&#xff1a;CPU:i5-13600KF 显卡&#xff1a;RTX3080 内存&#xff1a;32GB 1.安装ollama 访问https://ollama.com/&#xff0c;点击下载&#xff0c;完成后傻瓜式安装即可&#xff1b; 2.修改环境变量 默认大模型下载在C盘&…...

RSA(公钥加密算法)

RSA&#xff08;Rivest-Shamir-Adleman&#xff09;是一种常见的公钥加密算法&#xff0c;广泛应用于安全通信中。它是由三位计算机科学家Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出的&#xff0c;是一种基于数论问题的加密算法。 一、RSA的基本原理 RSA是基于大数…...

Go语言测试用例的执行与分析

在软件开发过程中&#xff0c;测试用例是确保代码质量的关键环节。Go语言作为一种现代的编程语言&#xff0c;它内置了强大的测试框架&#xff0c;可以帮助开发者轻松编写和执行测试用例。本文将介绍如何在 Go 语言中编写、执行测试用例&#xff0c;并对测试结果进行分析。 ## …...

动态规划-LCR 089.打家劫舍-力扣(LeetCode)

一、题目解析 结合示例1&#xff0c;我们能得知对于小偷而言不能连续偷相连的房间&#xff0c;且需要保证偷窃的金额最高。 二、算法解析 1.状态表示 我们想知道到最后一个房子时所偷窃的最高金额&#xff0c;所以dp[i]表示在i位置时&#xff0c;所偷到的最大价值。 但我们…...

leetcode hot100:解题思路大全

因为某大厂的算法没有撕出来&#xff0c;怒而整理该贴。只有少数题目有AC代码&#xff0c;大部分只会有思路或者伪代码。 技巧 只出现一次的数字 题目 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出…...

2022年下半年信息系统项目管理师——综合知识真题及答案(4)

2022年下半年信息系统项目管理师 ——综合知识真题及答案&#xff08;4&#xff09; 零、时光宝盒 &#xff08;https://blog.csdn.net/weixin_69553582 逆境清醒&#xff09; 双向奔赴的善意 网上看到的视频。 家里开包子店的男孩冒雨放学&#xff0c;路口的交警叔叔担心孩…...

大语言模型(LLM)本身是无状态的,怎么固化记忆

大语言模型(LLM)本身是无状态的,无法直接“记住”历史对话或用户特定信息 大语言模型(LLM)本身是无状态的,无法直接“记住”历史对话或用户特定信息,但可以通过架构改进、外部记忆整合、训练方法优化等方案实现上下文记忆能力。 一、模型内部记忆增强:让LLM“记住”…...