LeetCode 4. 寻找两个正序数组的中位数
本质上是使用二分查找
注意:在考虑二分的边界时,可以不用数组的下标边界进行替代,而是直接使用极大的数进行替代

1 class Solution { 2 public: 3 double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { 4 if(nums1.size()>nums2.size()) 5 return findMedianSortedArrays(nums2,nums1); 6 int n1=nums1.size(),n2=nums2.size(); 7 int n=n1+n2; 8 int k=n%2==0?n/2:n/2+1; 9 double res=0; 10 11 int l=-1,r=n1-1; 12 while(l<=r) 13 { 14 int mid1=(l+r)>>1; 15 int mid2=k-mid1-1-1; 16 17 int num1_l=mid1>=0?nums1[mid1]:INT_MIN; 18 int num2_l=mid2>=0?nums2[mid2]:INT_MIN; 19 int num1_r=mid1+1<n1?nums1[mid1+1]:INT_MAX; 20 int num2_r=mid2+1<n2?nums2[mid2+1]:INT_MAX; 21 22 if(max(num1_l,num2_l)<=min(num1_r,num2_r)) 23 { 24 res=max(num1_l,num2_l); 25 if(n%2==0) 26 { 27 res+=min(num1_r,num2_r); 28 res/=2; 29 } 30 return res; 31 32 } 33 else if(num1_l>num2_r) 34 r=mid1-1; 35 else 36 l=mid1+1; 37 } 38 39 return 0; 40 41 42 43 } 44 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人