Skip to content

Commit

Permalink
Time: 6 ms (44.79%), Space: 7.2 MB (43.62%) - LeetHub
Browse files Browse the repository at this point in the history
  • Loading branch information
Dipendra-Raghav committed Oct 12, 2023
1 parent 951b5af commit a054684
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions 1095-find-in-mountain-array/1095-find-in-mountain-array.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* // This is the MountainArray's API interface.
* // You should not implement it, or speculate about its implementation
* class MountainArray {
* public:
* int get(int index);
* int length();
* };
*/

class Solution {
public:
int findInMountainArray(int target, MountainArray &mountainArr) {
int n=mountainArr.length();
int i=0;
int j=n-1;
int peak=-1;
while(i<=j)
{
int mid=(i+j)/2;
int t=mountainArr.get(mid);
if(t>mountainArr.get(mid-1) && t>mountainArr.get(mid+1))
{
peak=mid;
break;
}
else if(t<mountainArr.get(mid+1) && t>mountainArr.get(mid-1))
{
i=mid;
}
else
{
j=mid;
}
}

//in first half
i=0;
j=peak;
while(i<=j)
{
int mid=(i+j)/2;
int t=mountainArr.get(mid);
if(t==target)return mid;
else if(t<target)
i=mid+1;
else
j=mid-1;
}
i=n-1;
j=peak;
while(j<=i)
{
int mid=(i+j)/2;
int t=mountainArr.get(mid);
if(t==target)return mid;
else if(t<target)
i=mid-1;
else
j=mid+1;
}
return -1;
}
};

0 comments on commit a054684

Please sign in to comment.