Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1bfb12c

Browse files
Create 04.median_of_sorted_array.cpp
1 parent 6a13b92 commit 1bfb12c

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

‎04.median_of_sorted_array.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
}
7+
int i = 0, j = nums1.size();
8+
// bianry search boundary condition
9+
while(i<=j)
10+
{
11+
// initial mid
12+
int mid = (j-i)/2+i;
13+
// next mid to consider between the given mid of num1 and mid between num1 and num2
14+
int mid2 = (nums1.size()+nums2.size()+1)/2-mid;
15+
// checking if mid == 0
16+
// initialise l1
17+
int l1 = (mid==0)?INT_MIN:nums1[mid-1];
18+
// intialise l2
19+
int l2 = (mid2==0)?INT_MIN:nums2[mid2-1];
20+
// initialise r1 and r2
21+
int r1 = (mid==nums1.size())?INT_MAX:nums1[mid];
22+
int r2 = (mid2==nums2.size())?INT_MAX:nums2[mid2];
23+
// check if lvalues are smaller than or equal to the rvalues
24+
if(l1<=r2 && l2<=r1)
25+
{
26+
// return the max value of the lvalues and its odd
27+
if((nums1.size()+nums2.size()) & 1)
28+
return (double) max(l1,l2) ;
29+
// return max lvalue and min rvalue
30+
else
31+
return ((double(max(l1,l2)+min(r1,r2))))/2;
32+
}
33+
// changing the boundary values acc to the conditions
34+
else if(l1 > r2)
35+
j = mid-1;
36+
else
37+
i = mid+1;
38+
}
39+
return -1.0;
40+
}
41+
};

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /