knakul853

Untitled

Jul 19th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int inf = INT_MAX;
  4.     double findMedianSortedArrays(vector<int>& A, vector<int>& B) {
  5.        
  6.         int n = A.size();
  7.         int m =B.size();
  8.        
  9.         if(n < m)return findMedianSortedArrays(B,A);
  10.        
  11.         int lo = 0 , hi = 2* m;
  12.        
  13.         while(lo <= hi)
  14.         {
  15.             int m2 = ( lo + hi ) >> 1;
  16.             int m1 = ( n + m ) - m2;
  17.            
  18.             double l1 = (m1 == 0) ?INT_MIN : A[(m1-1)/2];
  19.             double l2 = (m2 == 0) ? INT_MIN : B[(m2-1)/2];
  20.            
  21.             double r1 = (m1 == 2*n) ?INT_MAX : A[(m1)/2];
  22.             double r2 = (m2 == 2*m) ?INT_MAX : B[(m2)/2];
  23.            
  24.             if(l1 > r2 ) lo = m2 + 1;
  25.             else if (l2 > r1) hi =m2 - 1;
  26.             else return (max(l1 , l2) + min(r1 , r2))/2.0;
  27.            
  28.         }
  29.        
  30.         return -1;
  31.        
  32.     }
  33. };
Add Comment
Please, Sign In to add comment