Advertisement
nikunjsoni

1095

May 19th, 2021
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. /**
  2.  * // This is the MountainArray's API interface.
  3.  * // You should not implement it, or speculate about its implementation
  4.  * class MountainArray {
  5.  *   public:
  6.  *     int get(int index);
  7.  *     int length();
  8.  * };
  9.  */
  10.  
  11. class Solution {
  12. public:
  13.     int findInMountainArray(int target, MountainArray &arr) {
  14.         int n = arr.length();
  15.         int l=0, r=n-1;
  16.        
  17.         // Find peak.
  18.         while(l<r){
  19.             int mid = (l+r)/2;
  20.             if(arr.get(mid) < arr.get(mid+1))
  21.                 l = mid+1;
  22.             else
  23.                 r = mid;
  24.         }
  25.         int k = l;
  26.        
  27.         // Search left space.
  28.         l=0; r=k;
  29.         while(l<=r){
  30.             int mid = (l+r)/2;
  31.             int val = arr.get(mid);
  32.             if(val == target)
  33.                 return mid;
  34.             else if(val < target)
  35.                 l = mid+1;
  36.             else
  37.                 r = mid-1;
  38.         }
  39.        
  40.         // Search right space.
  41.         l = k+1, r = n-1;
  42.         while(l<=r){
  43.             int mid = (l+r)/2;
  44.             int val = arr.get(mid);
  45.             if(val == target)
  46.                 return mid;
  47.             else if(val < target)
  48.                 r = mid-1;
  49.             else
  50.                 l = mid+1;
  51.         }
  52.         return -1;
  53.     }
  54.    
  55. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement