当前位置:网站首页>分治法求解中位数
分治法求解中位数
2022-08-03 06:34:00 【干饭小白】
来先上代码:
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
if(nums1.size() > nums2.size()){ //如果nums1的长度大于nums2,则交换
return findMedianSortedArrays(nums2,nums1);
}
int len1 = nums1.size();
int len2 = nums2.size();
//分割线左边的元素的个数,如果是奇数我们让左边的个数多一个
int total_left = (len1 + len2 + 1) / 2; //向下取整
//我们在长度小的那个数组里找分割线,那么长度大的一定含有分割线
//[0,len1]
int left = 0;
int right = len1;
//我们是不是要确定 left 和 right 的位置呀
//我们在这层循环里只寻妖考虑短的那一边 [0,len1]-->在这里面找分割线
while(left < right){
int i = left + (right - left + 1)/2; //从中间开始-->第一个数组里去的个数
int j = total_left - i; //从第二个数组里取的个数
if(nums1[i - 1] > nums2[j]){
right = i - 1; //那么分割线所在的区间一定为[0,i-1]
}else{
left = i;
}
}
//判断结果
int i = left; //-->第一个数组里分割线左边的个数
int j = total_left - i; //-->第二个数组里分割线左边的个数
//第一个数组左边最小的和右边最大的
int nums1LeftMax = i== 0 ? INT_MIN : nums1[i - 1];
int nums1RightMin = i== len1 ? INT_MAX : nums1[i];
//第二个数组左边最小的和右边最大的
int nums2LeftMax = j== 0 ? INT_MIN : nums2[j - 1];
int nums2RightMin = j== len2 ? INT_MAX : nums2[j];
if((len1 + len2) % 2 == 0){ //偶数个-->左边最大的和右边最小的和
int ans1 = max(nums1LeftMax,nums2LeftMax);
int ans2 = min(nums1RightMin,nums2RightMin);
return double((ans1 + ans2)/2.0);
}else{//奇数个-->左边最大大的
return (double)max(nums1LeftMax,nums2LeftMax);
}
}
};边栏推荐
- JS 预编译
- 【图像边缘检测】基于matlab灰度图像的积累加权边缘检测【含Matlab源码 2010期】
- Detailed explanation and reproduction of AlexNet network
- 【RT_Thread学习笔记】---以太网LAN8720A Lwip ping 通网络
- Sqoop 导入导出 Null 存储一致性问题
- JS 原型原型链
- 信息学奥赛一本通T1447:靶形数独
- boot - SSE
- 线程基础(二)
- El - tree set using setCheckedNodessetCheckedKeys default check nodes, and a new check through setChecked specified node
猜你喜欢
随机推荐
深入理解IO流(第一篇)
Nacos单机模式的安装与启动
关于任命韩文弢博士代理NOI科学委员会主席的公告
亿流量大考(1):日增上亿数据,把MySQL直接搞宕机了...
(十四)51单片机——LCD1602实现滚动效果
多线程案例
C语言版本和GCC版本
consul理解
帆软11版本参数联动为null查询全部
Umi 4 快速搭建项目
华为设备配置BFD状态与接口状态联动
七夕和程序员有毛关系?
nacos-2.0.3启动报错出现no datasource set的坑
请手撸5种常见限流算法!面试必备
模型训练前后显卡占用对比、多卡训练GPU占用分析【一文读懂】
Detailed explanation and reproduction of AlexNet network
JS 原型原型链
【playwright】pytest-playwright增加代理服务选项
ORB-SLAM2提取特征点
从学生到职场的转变









