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

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

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

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

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

示例

输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

法1:合并数组,排序,找中位数

class Solution {
public:double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {nums1.insert(nums1.end(),nums2.begin(),nums2.end());sort(nums1.begin(), nums1.end());int total_size = nums1.size();return (total_size % 2 ==0 ) ? (nums1[total_size / 2] + nums1[total_size / 2 - 1]) / 2.0: nums1[total_size/ 2];}
};

法2:二分查找(ps:二分解题思路借鉴:灵茶山艾府 大佬)

class Solution {
public:double findMedianSortedArrays(vector<int>& a, vector<int>& b) {if (a.size() > b.size()) {swap(a, b);}int m = a.size(), n = b.size();a.insert(a.begin(), INT_MIN);b.insert(b.begin(), INT_MIN);a.push_back(INT_MAX);b.push_back(INT_MAX);int l = 0, r = m + 1;while (l + 1 < r) {int i = l + (r - l) / 2;int j = (m + n + 1) / 2 - i;if(a[i] <= b[j+1]){l = i;}else{r = i;}}int i = l;int j = (m + n + 1) / 2 - i;int max1 = max(a[i], b[j]);int min2 = min(a[i+1], b[j + 1]);return (m + n) % 2 ? max1 : (max1 + min2) / 2.0;}
};
http://www.jsqmd.com/news/73128/

相关文章:

  • 考陪诊师为什么选北京守嘉陪诊报名? - 品牌排行榜单
  • task5
  • 【torch】torch.cat和直接相加的区别
  • Flink学习笔记:多流 Join
  • python装饰器 —— @lru_cache
  • Java基础补缺2
  • Ai元人文:对岐金兰观察的深度回应——价值协商与数值优化的范式调和
  • 如何编写优秀的 CLAUDE.md
  • 记最近找的一款时间管理软件 - Higurashi
  • 《综合项目实战-局域网内的沟通软件》
  • 1-Year XTOOL D9 EV Update Service: Keep Diagnostics Current for Euro/American Vehicles
  • AI智能相机未来应用 - 指南
  • 12/11
  • Boost Diagnostics with Autel MaxiVCI V150 Wireless Dongle – CAN FD/DOIP for 900 Series Scanners
  • 1-Year XTOOL X100 PADS Update: Keep Your Tool Updated for Euro/American Vehicles
  • 面向对象编程
  • 深入解析:[特殊字符] 在 Windows 上设置 SQLite
  • 爬虫专栏:抗封禁实战——代理技术全解析与央视节目爬虫落地案例
  • 实用工具:VS Code 配置 Markdown 编译器全指南
  • 实用指南:《嵌入式成长系列之51单片机 --- Keil5创建工程》
  • python —— 求解斐波那契数列
  • 机器学习超参数调优:十个实用的贝叶斯优化(Bayesian Optimization)进阶技巧
  • 模糊测试助力黑客攻防:关键信息泄露漏洞挖掘实录
  • 007.高精度模板(重载运算符)
  • 停止用 nohup 启动生产
  • 访答:数字化时代的知识管理新范式
  • 访答:数字化时代的知识管理新范式
  • uni-app微信小应用相机组件二次拍照白屏问题的排查与解除
  • 【Ubuntu】一些用于学习/问题解决的文章
  • 专业深度测评2025年市面上优秀的淘宝代运营服务商 - 品牌推荐官优选