leetcode 04 Median of Two Sorted Arrays
2024-09-09 17:33:53
n1 为 num1的 len
n2 为 num2的 len
故中间的数应该是 k = (n1 + n2 + 1) / 2
二分 num1中位置 m1 , 故 num2的位置为m2
必须保证 nums1[m1-1] <= nums2[m2]
且nums1[m1] >= nums2[m2-1]
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
if(nums1.size() > nums2.size())
return findMedianSortedArrays(nums2, nums1);
int n1 = nums1.size(), n2 = nums2.size();
int l = 0, r = n1-1;
const int k = (n1 + n2 + 1) / 2;
while(l <= r) {
int m1 = (l + r) /2;
int m2 = k - m1;
if(nums1[m1] <= nums2[m2-1])
l = m1 + 1;
else
r = m1 - 1;
}
int m1 = l;
int m2 = k - l;
int c1 = max( m1<=0 ? INT_MIN : nums1[m1-1],
m2<=0 ? INT_MIN : nums2[m2-1]);
int c2 = min( m1>=n1 ? INT_MAX : nums1[m1],
m2>=n2 ? INT_MAX : nums2[m2] );
if((n1 + n2) & 1)
return c1;
return 0.5 * (c1 + c2);
}
};
最新文章
- WPF 自定义的窗口拖动
- FastJson的简单实用
- 中文和unicode互转
- sp_getTable_data
- Image Cropper+java实现截图工具
- Linux内存调试工具初探-MEMWATCH
- API通用设计原则
- 【HighCharts系列教程】一、认识Highcharts
- java web:在eclipse中如何创建java web 项目
- vs插件-基于TFS的源码记录可视化
- python判断文件是否存在
- Hibernate(二)
- Percona MySQL5.7内存OOM案例导致重启的memory和thread分析
- python初步学习-python模块之 commands
- Numpy:np.vstack()&;np.hstack() flat/flatten
- STM32运行FreeRTOS出现prvTaskExitError错误死机
- 用w32tm设置服务器时间同步
- PyCharm Python迁移项目
- nyoj 325——zb的生日——————【dp】
- CAD安装失败怎样卸载CAD 2011?错误提示某些产品无法安装