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

4. 寻找两个正序数组的中位数

题目链接:

4. 寻找两个正序数组的中位数

题目描述:

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

算法的时间复杂度应该为 O(log (m+n)) 。

题目分析:

用双指针合并数组,中位数为中间的一项或两项之和除以2

题解:

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {int arr[nums1Size+nums2Size];// 当合并后数组元素的个数为单数时,tag等于1,双数时为0int tag = (nums1Size + nums2Size) %2;// 存放中间值的角标int middle = (nums1Size + nums2Size)/2;int count = 0;int i = 0;int j = 0;while(i < nums1Size && j < nums2Size){if(nums1[i] < nums2[j]){arr[count++] = nums1[i++];}else{arr[count++] = nums2[j++];}}while(i < nums1Size){arr[count++] = nums1[i++];}while(j < nums2Size){arr[count++] = nums2[j++];}if((nums1Size == 0 && nums2Size == 1) || (nums1Size == 1 && nums2Size == 0)){return arr[middle];}// 当个数为单数时,返回中间值,为偶数时为arr[middle] + arr[middle-1]除以2if(tag){return arr[middle];}else{return (arr[middle] + arr[middle-1])/2.0;}
}

http://www.xdnf.cn/news/8330.html

相关文章:

  • 复盘20250522
  • C++:list容器,deque容器
  • 六大设计原则
  • 如何在 FastAPI 中合理使用 Pydantic 的 Alias
  • UE4 Simulation Stage 制作 平流
  • 开疆智能Profinet转RS485网关连接富士电机配置案例
  • 问题 | 撰写一份优秀的技术文档,既是科学也是艺术。
  • 模仿医学专家思维的Citrus:助力医疗决策支持
  • 自定义类型-联合体
  • 十进制转二进制
  • git@gitee.com: Permission denied (publickey). fatal: 无法读取远程仓库
  • N-gram语言模型原理与实战教程
  • sqli-labs第二十一/二十二关——POST-base64
  • STL 转 STP 深度技术指南:从 3D 打印模型到工程标准的跨领域转换全解析(附迪威模型在线方案)
  • 亚马逊选品可以从以下几个方面着手
  • 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第十章
  • 各种标准的简称和字母标识
  • 01-jenkins学习之旅-window-下载-安装-安装后设置向导
  • Android 串口-usb-serial-for-android
  • Spring Boot——自动配置
  • 如何给文件夹添加编号?批量给文件夹添加数字、字母、日期编号
  • 前端判空:与后端 “千层套路” 的斗智斗勇
  • highCharts生成3D饼图
  • 若依Ruoyi富文本编辑器Quill粘贴图片改成文件上传(不使用base64)
  • 【C/C++】深入解析Linux下C/C++内存管理全攻略(纲要)
  • 从0到1玩转TypeScript:开启类型世界的奇妙冒险
  • 基于 AMDXCVU13P FPGA 的 4 路 100G 光纤 PCIe 低时延高性能计算加速卡
  • MCP Server StreamableHTTP 开发学习文档
  • RT-Thread源码阅读(2)——任务启动与调度
  • ArkTs中的尾随闭包