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);
}
};

最新文章

  1. WPF 自定义的窗口拖动
  2. FastJson的简单实用
  3. 中文和unicode互转
  4. sp_getTable_data
  5. Image Cropper+java实现截图工具
  6. Linux内存调试工具初探-MEMWATCH
  7. API通用设计原则
  8. 【HighCharts系列教程】一、认识Highcharts
  9. java web:在eclipse中如何创建java web 项目
  10. vs插件-基于TFS的源码记录可视化
  11. python判断文件是否存在
  12. Hibernate(二)
  13. Percona MySQL5.7内存OOM案例导致重启的memory和thread分析
  14. python初步学习-python模块之 commands
  15. Numpy:np.vstack()&amp;np.hstack() flat/flatten
  16. STM32运行FreeRTOS出现prvTaskExitError错误死机
  17. 用w32tm设置服务器时间同步
  18. PyCharm Python迁移项目
  19. nyoj 325——zb的生日——————【dp】
  20. CAD安装失败怎样卸载CAD 2011?错误提示某些产品无法安装

热门文章

  1. wordpress学习(五)----插件
  2. javascript(三):对象
  3. ecplise问题总结
  4. QString 与 string转换
  5. 20165215 实验一 Java开发环境的熟悉
  6. spring boot 概念
  7. js如何获取服务器端时间?
  8. rgferg
  9. 洛谷 P1015 回文数
  10. struts2 的入门案例