Skip to content

Commit cd28afc

Browse files
committed
Runtime: 13 ms (Top 8.65%) | Memory: 6.9 MB (Top 88.34%)
1 parent ad74db7 commit cd28afc

File tree

1 file changed

+31
-41
lines changed

1 file changed

+31
-41
lines changed
Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,53 @@
1+
// Runtime: 13 ms (Top 8.65%) | Memory: 6.9 MB (Top 88.34%)
12
/**
23
* // This is the MountainArray's API interface.
34
* // You should not implement it, or speculate about its implementation
45
* class MountainArray {
5-
* public:
6-
* int get(int index);
7-
* int length();
6+
* public:
7+
* int get(int index);
8+
* int length();
89
* };
910
*/
1011

1112
class Solution {
1213
public:
13-
14+
1415
//----------------------- find peak ---------------------------------------
15-
16+
1617
int find_max(MountainArray &mountainArr,int start,int end)
1718
{ int n= mountainArr.length();
1819
while(start<=end)
19-
{ int mid= start+(end-start)/2;
20+
{ int mid= start+(end-start)/2;
2021
int next=(mid+1)%n;
2122
int prev=(mid+n-1)%n;
22-
23+
2324
int mid_val = mountainArr.get(mid);
2425
int pre_val = mountainArr.get(prev);
2526
int next_val = mountainArr.get(next);
26-
27+
2728
if(mid_val > next_val and mid_val>pre_val)
2829
return mid;
29-
30-
else if(mid_val<next_val and mid_val > pre_val)
30+
31+
else if(mid_val<next_val and mid_val > pre_val)
3132
start=mid+1;
32-
33+
3334
else if(mid_val>next_val and mid_val<pre_val)
3435
end=mid-1;
35-
36+
3637
}
3738
return -1;
38-
39+
3940
}
40-
41-
42-
43-
44-
//--------------------------binary search-------------------------------------------
45-
41+
42+
//--------------------------binary search-------------------------------------------
43+
4644
int binary_search(MountainArray &mountainArr,int start,int end,int target)
4745
{
4846
while(start<=end)
4947
{
5048
int mid= start + (end-start)/2;
5149
int mid_val=mountainArr.get(mid);
52-
50+
5351
if(mid_val==target)
5452
return mid;
5553
else if(target < mid_val)
@@ -61,12 +59,9 @@ class Solution {
6159
}
6260
return -1;
6361
}
64-
65-
66-
67-
68-
//----------------------binary search in reverse sorted------------------------------
69-
62+
63+
//----------------------binary search in reverse sorted------------------------------
64+
7065
int binary_search_rev(MountainArray &mountainArr,int start,int end,int target)
7166
{
7267
while(start<=end)
@@ -84,12 +79,9 @@ class Solution {
8479
}
8580
return -1;
8681
}
87-
88-
89-
90-
82+
9183
//------------------------------returns minimum index of target--------------------------------------
92-
84+
9385
int evaluate_ans(int a,int b)
9486
{
9587
if(a==-1 and b==-1 )
@@ -98,22 +90,20 @@ class Solution {
9890
return min(a,b);
9991
else if(a==-1 and b!=-1)
10092
return b;
101-
else
93+
else
10294
return a;
103-
95+
10496
}
105-
97+
10698
int findInMountainArray(int target, MountainArray &mountainArr) {
107-
108-
109-
99+
110100
int start=0;
111101
int n= mountainArr.length()-1;
112-
int max_in = find_max(mountainArr,start ,n);
113-
102+
int max_in = find_max(mountainArr,start ,n);
103+
114104
int a= binary_search(mountainArr,start,max_in,target);
115105
int b= binary_search_rev(mountainArr,max_in + 1,n,target);
116-
106+
117107
return evaluate_ans(a,b);
118108
}
119-
};
109+
};

0 commit comments

Comments
 (0)