当前位置: 首页 > 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.jsqmd.com/news/933333/

相关文章:

  • Halcon实战:用edges_sub_pix和fit_circle_contour_xld搞定金属零件圆孔尺寸测量
  • 人机协作新范式:2026年最值得入手的专业AI论文工具
  • 【独家内测实录】Sora 2面部表情生成API调用失败率下降92.7%的7个隐藏配置项(附GitHub验证脚本)
  • 生产级 RAG 不是搜几个 chunk:从召回到引用的一条可信链
  • 手把手解读ACPI表:用Linux命令‘窥探’你电脑的电源管理蓝图
  • LeetCode--Merge k Sorted Lists--分治策略
  • 好用还专业!2026年最流行一键生成论文工具榜单,AI工具一键写高质论文
  • 从Fire Module到移动端部署:手把手教你用PyTorch复现SqueezeNet 1.1(附完整代码)
  • 如何用现代化Rust工具彻底改变Total War模组开发:终极指南
  • 用C# WinForm给汇川H3U PLC做个上位机:从API引用到读写数据的完整流程
  • 观察者模式实战——从消息订阅看一对多通知
  • Longest Valid Parentheses(动态规划)
  • OrCAD端口转换补丁实测:一键切换Port与Off-Page Connector,附详细安装避坑指南
  • STM32F030C8T6直接可用的W25Q128 SPI Flash驱动工程(Keil MDK-ARM v5,含.hex和完整CubeMX项目)
  • 2026年亲测AI论文写作软件榜单(安全合规版)
  • Sora 2配音与Premiere Pro/FCPX/Davinci Resolve无缝协同指南,附官方未文档化的Timecode Injection协议
  • 2026年近期想找温州老爹鞋直销厂商?这五家实力供应商值得关注 - 2026年企业资讯
  • LeetCode--Search a 2D Matrix II(分治策略)
  • 从漆包线到发光盆景:手工焊接1206贴片LED的电子艺术实践
  • 基于Arduino与NeoPixel的智能光剑制作:从电路设计到3D打印全流程
  • 如何快速掌握Illustrator脚本:提升设计效率的完整实战指南
  • 新手也能搞定!用ADS 2023一步步仿真LNA的直流偏置与稳定性(附原理图)
  • 2026年5月无溶剂环氧涂料工厂推荐,环氧酚醛/光固化保护套/石墨烯涂料/无溶剂环氧涂料,无溶剂环氧涂料批发厂家怎么选 - 品牌推荐师
  • FortiGate 7.4.2 新机开箱第一步:从接上网线到设置中文界面的保姆级避坑指南
  • Spring Boot 3 + Swagger 3 + Knife4j 4.1.0:从配置到美化,打造团队都爱用的API文档(避坑指南)
  • 如何免费永久保存微信聊天记录:WeChatMsg终极完整使用指南
  • WSL2 Ubuntu 20.04 装完Docker报错?别慌,一个命令切换iptables模式就能搞定
  • Unique Paths II(动态规划)
  • 格式规范否?8款AI论文写作工具梯队榜,毕业答辩稳了!
  • 【Sora 2倒放视频生成黑科技】:全球仅3家实验室验证的时序逆向建模方法首度公开