File tree Expand file tree Collapse file tree 6 files changed +183
-9
lines changed
solution/0800-0899/0852.Peak Index in a Mountain Array Expand file tree Collapse file tree 6 files changed +183
-9
lines changed Original file line number Diff line number Diff line change 75
75
76
76
<!-- 这里可写通用的实现逻辑 -->
77
77
78
+ 二分查找
79
+
78
80
<!-- tabs:start -->
79
81
80
82
### ** Python3**
81
83
82
84
<!-- 这里可写当前语言的特殊实现逻辑 -->
83
85
84
86
``` python
85
-
87
+ class Solution :
88
+ def peakIndexInMountainArray (self , arr : List[int ]) -> int :
89
+ n = len (arr)
90
+ left, right = 1 , n - 2
91
+ while left < right:
92
+ mid = (left + right) // 2
93
+ if arr[mid] < arr[mid + 1 ]:
94
+ left = mid + 1
95
+ else :
96
+ right = mid
97
+ return right
86
98
```
87
99
88
100
### ** Java**
89
101
90
102
<!-- 这里可写当前语言的特殊实现逻辑 -->
91
103
92
104
``` java
105
+ class Solution {
106
+ public int peakIndexInMountainArray (int [] arr ) {
107
+ int n = arr. length;
108
+ int left = 1 , right = n - 2 ;
109
+ while (left < right) {
110
+ int mid = left + (right - left) / 2 ;
111
+ if (arr[mid] < arr[mid + 1 ]) {
112
+ left = mid + 1 ;
113
+ } else {
114
+ right = mid;
115
+ }
116
+ }
117
+ return right;
118
+ }
119
+ }
120
+ ```
121
+
122
+ ### ** Go**
123
+
124
+ ``` go
125
+ func peakIndexInMountainArray (arr []int ) int {
126
+ n := len (arr)
127
+ left , right := 1 , n-2
128
+ for left < right {
129
+ mid := left + (right-left)/2
130
+ if arr[mid] < arr[mid+1 ] {
131
+ left = mid + 1
132
+ } else {
133
+ right = mid
134
+ }
135
+ }
136
+ return right
137
+ }
138
+ ```
93
139
140
+ ### ** C++**
141
+
142
+ ``` cpp
143
+ class Solution {
144
+ public:
145
+ int peakIndexInMountainArray(vector<int >& arr) {
146
+ int n = arr.size();
147
+ int left = 1, right = n - 2;
148
+ while (left < right) {
149
+ int mid = left + (right - left) / 2;
150
+ if (arr[ mid] < arr[ mid + 1] ) {
151
+ left = mid + 1;
152
+ } else {
153
+ right = mid;
154
+ }
155
+ }
156
+ return right;
157
+ }
158
+ };
94
159
```
95
160
96
161
### **...**
Original file line number Diff line number Diff line change 49
49
50
50
## Solutions
51
51
52
+ binary search
53
+
52
54
<!-- tabs:start -->
53
55
54
56
### ** Python3**
55
57
56
58
``` python
57
-
59
+ class Solution :
60
+ def peakIndexInMountainArray (self , arr : List[int ]) -> int :
61
+ n = len (arr)
62
+ left, right = 1 , n - 2
63
+ while left < right:
64
+ mid = (left + right) // 2
65
+ if arr[mid] < arr[mid + 1 ]:
66
+ left = mid + 1
67
+ else :
68
+ right = mid
69
+ return right
58
70
```
59
71
60
72
### ** Java**
61
73
62
74
``` java
75
+ class Solution {
76
+ public int peakIndexInMountainArray (int [] arr ) {
77
+ int n = arr. length;
78
+ int left = 1 , right = n - 2 ;
79
+ while (left < right) {
80
+ int mid = left + (right - left) / 2 ;
81
+ if (arr[mid] < arr[mid + 1 ]) {
82
+ left = mid + 1 ;
83
+ } else {
84
+ right = mid;
85
+ }
86
+ }
87
+ return right;
88
+ }
89
+ }
90
+ ```
91
+
92
+ ### ** Go**
93
+
94
+ ``` go
95
+ func peakIndexInMountainArray (arr []int ) int {
96
+ n := len (arr)
97
+ left , right := 1 , n-2
98
+ for left < right {
99
+ mid := left + (right-left)/2
100
+ if arr[mid] < arr[mid+1 ] {
101
+ left = mid + 1
102
+ } else {
103
+ right = mid
104
+ }
105
+ }
106
+ return right
107
+ }
108
+ ```
63
109
110
+ ### ** C++**
111
+
112
+ ``` cpp
113
+ class Solution {
114
+ public:
115
+ int peakIndexInMountainArray(vector<int >& arr) {
116
+ int n = arr.size();
117
+ int left = 1, right = n - 2;
118
+ while (left < right) {
119
+ int mid = left + (right - left) / 2;
120
+ if (arr[ mid] < arr[ mid + 1] ) {
121
+ left = mid + 1;
122
+ } else {
123
+ right = mid;
124
+ }
125
+ }
126
+ return right;
127
+ }
128
+ };
64
129
```
65
130
66
131
### **...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int peakIndexInMountainArray (vector<int >& arr) {
4
+ int n = arr.size ();
5
+ int left = 1 , right = n - 2 ;
6
+ while (left < right) {
7
+ int mid = left + (right - left) / 2 ;
8
+ if (arr[mid] < arr[mid + 1 ]) {
9
+ left = mid + 1 ;
10
+ } else {
11
+ right = mid;
12
+ }
13
+ }
14
+ return right;
15
+ }
16
+ };
Original file line number Diff line number Diff line change
1
+ func peakIndexInMountainArray (arr []int ) int {
2
+ n := len (arr )
3
+ left , right := 1 , n - 2
4
+ for left < right {
5
+ mid := left + (right - left )/ 2
6
+ if arr [mid ] < arr [mid + 1 ] {
7
+ left = mid + 1
8
+ } else {
9
+ right = mid
10
+ }
11
+ }
12
+ return right
13
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
- public int peakIndexInMountainArray (int [] A ) {
3
- int l = 0 , r = A .length - 1 ;
4
- while (l < r ) {
5
- int mid = l + r >>> 1 ;
6
- if (A [mid ] > A [mid + 1 ]) r = mid ;
7
- else l = mid + 1 ;
2
+ public int peakIndexInMountainArray (int [] arr ) {
3
+ int n = arr .length ;
4
+ int left = 1 , right = n - 2 ;
5
+ while (left < right ) {
6
+ int mid = left + (right - left ) / 2 ;
7
+ if (arr [mid ] < arr [mid + 1 ]) {
8
+ left = mid + 1 ;
9
+ } else {
10
+ right = mid ;
11
+ }
8
12
}
9
- return r ;
13
+ return right ;
10
14
}
11
15
}
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def peakIndexInMountainArray (self , arr : List [int ]) -> int :
3
+ n = len (arr )
4
+ left , right = 1 , n - 2
5
+ while left < right :
6
+ mid = (left + right ) // 2
7
+ if arr [mid ] < arr [mid + 1 ]:
8
+ left = mid + 1
9
+ else :
10
+ right = mid
11
+ return right
You can’t perform that action at this time.
0 commit comments