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

LeetCode--Median of Two Sorted Arrays

#Median of Two Sorted Arrays

更多技术博客 http://vilins.top/

##题目
There are two sorted arrays nums1 and nums2 of size m and n respectively.

Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

You may assume nums1 and nums2 cannot be both empty.
###Example

nums1 = [1, 3] nums2 = [2] The median is 2.0

###Example

nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5

##分析
这题要求时间复杂度为O(log (m+n)).所以我们需要在遍历一次的一半时间内需要将结果找出来。而且我们不需要额外的申请空间,我们采取的策略是两个数组同时遍历,遍历的过程中同时比较元素的大小,这样我们就可以找出前O(log (m+n))个元素,然后就是我们需要寻找的结果。

##源码

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int totalSize = nums1Size + nums2Size; int medianSize = totalSize/2; int a1 = 0, a2 = 0; double result = 0; int t = 1; //当第一个数组为空的时候,再分别讨论奇偶 if(nums1Size == 0) { if(totalSize%2 == 0) { int tag1,tag2; for(int i = 0; i <= medianSize; i++) { if(i == medianSize -1) { tag1 = nums2[i]; } if(i == medianSize) { tag2 = nums2[i]; } } return (double)(tag1+tag2)/2; } else { int tag1,tag2; for(int i = 0; i <= medianSize; i++) { if(i == medianSize) { tag1 = nums2[i]; } } return tag1; } } //当第二个数组为空的时候,再分别讨论奇偶 if(nums2Size == 0) { if(totalSize%2 == 0) { int tag1,tag2; for(int i = 0; i <= medianSize; i++) { if(i == medianSize -1) { tag1 = nums1[i]; } if(i == medianSize) { tag2 = nums1[i]; } } return (double)(tag1+tag2)/2; } else { int tag1,tag2; for(int i = 0; i <= medianSize; i++) { if(i == medianSize) { tag1 = nums1[i]; } } return tag1; } } if(totalSize%2 == 0) { int tag1 = 0, tag2 = 0; for(int i = 0; i <= medianSize; i++) { if((nums1[a1] <= nums2[a2])&&(a1 < nums1Size)||a2 == nums2Size) { if(i == medianSize - 1) { tag1 = nums1[a1]; } if(i == medianSize) { tag2 = nums1[a1]; } a1++; } else{ if(i == medianSize - 1) { tag1 = nums2[a2]; } if(i == medianSize) { tag2 = nums2[a2]; } a2++; } } //printf("%d\n", tag1); return (double)(tag1+tag2)/2; } else { int tag1 = 0; for(int i = 0; i <= medianSize; i++){ if((nums1[a1] <= nums2[a2])&&(a1 < nums1Size)||a2 == nums2Size) { if(i == medianSize ) { tag1 = nums1[a1]; } a1++; } else { if(i == medianSize) { tag1 = nums2[a2]; } a2++; } } return tag1; } }

更多技术博客 http://vilins.top/

http://www.zskr.cn/news/1444670.html

相关文章:

  • Halcon实战:用edges_sub_pix和fit_circle_contour_xld搞定金属零件圆孔尺寸测量
  • 人机协作新范式:2026年最值得入手的专业AI论文工具
  • 生产级 RAG 不是搜几个 chunk:从召回到引用的一条可信链
  • 用C# WinForm给汇川H3U PLC做个上位机:从API引用到读写数据的完整流程
  • 观察者模式实战——从消息订阅看一对多通知
  • 从Fire Module到移动端部署:手把手教你用PyTorch复现SqueezeNet 1.1(附完整代码)
  • 基于Arduino与NeoPixel的智能光剑制作:从电路设计到3D打印全流程
  • 从漆包线到发光盆景:手工焊接1206贴片LED的电子艺术实践
  • 新手也能搞定!用ADS 2023一步步仿真LNA的直流偏置与稳定性(附原理图)
  • 统计思维实战自测:提升数据决策力,避开常见认知陷阱
  • 2026年6月,北京花洒置物平台服务商深度解析:为何恒洁卫浴成为品质之选? - 2026年企业资讯
  • AI生成图能注册版权吗?(美国版权局2023-2024全部裁定原文深度拆解)
  • FreeSWITCH新手避坑指南:第一次用fs_cli必须知道的3个关键点和1个危险操作
  • 惊了!输入题目,这几款AI写作辅助软件就能生成图文并茂的毕业论文
  • OV系列摄像头SCCB总线配置避坑指南:从三线到两线,时序参数怎么调才稳定?
  • Arduino JCB挖掘机模型:从机电一体化到3D打印的完整实践指南
  • 别再只会apt-get install了!遇到pkgProblemResolver依赖错误,试试这个更聪明的aptitude命令
  • RT-Thread在RA4M2上跑飞了?手把手教你用Cortex-M33的Fault寄存器定位Hardfault(附排查流程图)
  • AI商业应用实战:从单点工具到全链条重构的落地指南
  • 从SQL Server的CHARINDEX到C#的IndexOf:一次搞懂跨层字符串查找的‘索引差’问题
  • 从单机到多机:实战Loki+Promtail跨服务器日志收集,解决‘Data source connected, but no labels’和端口不通问题
  • 从Oracle/Mysql迁移视角:在Linux上快速部署达梦DM8开发版做兼容性测试
  • 2026年第二季度PVC专用机定制厂家专业选择深度解析与推荐 - 2026年企业资讯
  • MacBook Air电池更换全攻略:从诊断到安装的DIY实践
  • 厦门股权投资机构排行:厦门跨境电商财税、厦门代理记账、厦门哪家财务公司做跨境电商专业、厦门审计、厦门电商财税、厦门税收筹划选择指南 - 优质品牌商家
  • 从零搭建高压H桥逆变器:自举驱动与修正正弦波输出实战
  • 用51单片机+Multisim复刻DDFS信号源:从查表到滤波的完整仿真避坑指南
  • 2026年西安未央区家装实力公司专业分析:业之峰诺华家居装饰未央分公司深度评估 - 2026年企业资讯
  • 从美团春招真题‘区间删除’出发,聊聊如何用Python前缀和+二分查找搞定乘积末尾零问题
  • READ COMMITTED(读已提交)是数据库事务的四种标准隔离级别之一(其余为:READ UNCOMMITTED、REPEATABLE READ、SERIALIZABLE)