
LeetCode刷题 题4. 寻找两个正序数组的中位数
初始化指针和结果数组。 逐个比较数,直到合并完毕。 处理剩余元素并确定中位数。 在代码中处理特殊情况,确保正确计算。
发布日期:2021-05-20 10:42:27
浏览次数:21
分类:精选文章
本文共 1123 字,大约阅读时间需要 3 分钟。
首先,理解什么是中位数。在整理好数据后,找到中间的数或平均数。两个数组已排序,便于合并或对比。
合并两个已排序的数组可以选择低内存的方法,用指针逐个比较。同时,考虑测试边界情况如空数组。
以下步骤简明明了地解释了如何计算中位数:
方法思路:
-sort-array-example
如示例,合并后的数组为[1,2,3,4],中位数为2.5。
最终代码:
double findMedianSortedArrays(vector & nums1, vector & nums2) { vector merged; int i = 0, j = 0; int n = nums1.size(); int m = nums2.size(); while (i < n && j < m) { if (nums1[i] <= nums2[j]) { merged.push_back(nums1[i]); i++; } else { merged.push_back(nums2[j]); j++; } } while (i < n) { merged.push_back(nums1[i]); i++; } while (j < m) { merged.push_back(nums2[j]); j++; } if (n + m == 1) { return (double)merged[0]; } else if ((n + m) % 2) { return (double)merged[(n + m - 1)/2]; } else { return (double)(merged[n + m / 2 - 1] + merged[n + m / 2]) / 2; }}
请注意这一实现假设输入数组的类型已经被正确声明。测试时确保输入数据合法。
合并两个有序数组的指针方法节省了内存,避免了额外的排序开销。确保代码中的条件判断正确处理了所有情况。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年05月07日 19时15分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
TreeSet、TreeMap
2019-03-11
JVM内存模型
2019-03-11
可变长度参数
2019-03-11
3、条件查询
2019-03-11
cordova打包apk更改图标
2019-03-11
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2019-03-11
文件系统的层次结构
2019-03-11
vue(渐进式前端框架)
2019-03-11
vscode设置eslint保存文件时自动修复eslint错误
2019-03-11
Remove Extra one 维护前缀最大最小值
2019-03-11
Linux操作系统的安装与使用
2019-03-12
C++ 继承 详解
2019-03-12
OSPF多区域
2019-03-12
Docker入门之-镜像(二)
2019-03-12
去了解拉绳位移编码器的影响因素
2019-03-12
无法初始化Winsock2.2处理
2019-03-12
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
2019-03-12
重置UAG Application admin密码
2019-03-12
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12