Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Median of two sorted array.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int n1=nums1.size();
int n2=nums2.size();
if(n2<n1) return findMedianSortedArrays(nums2,nums1);

int low=0,high=n1;
while(low<=high){
int cut1=(high+low)/2;
int cut2=(n1+n2+1)/2-cut1;

int left1=cut1==0?INT_MIN:nums1[cut1-1];
int left2=cut2==0?INT_MIN:nums2[cut2-1];

int right1=cut1==n1?INT_MAX:nums1[cut1];
int right2=cut2==n2?INT_MAX:nums2[cut2];

if(left1<=right2 && left2<=right1){
if((n1+n2)%2==0){
return (max(left1,left2)+min(right1,right2))/2.0;
}else{
return max(left1,left2);
}
}else if(left1>right2){
high=cut1-1;
}else{
low=cut1+1;
}
}
return 0.0;
}