Skip to content

Commit 676a048

Browse files
committed
feat: add solutions to lc problem: No.0852.Peak Index in a Mountain Array
1 parent cd2e977 commit 676a048

File tree

6 files changed

+183
-9
lines changed

6 files changed

+183
-9
lines changed

solution/0800-0899/0852.Peak Index in a Mountain Array/README.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,87 @@
7575

7676
<!-- 这里可写通用的实现逻辑 -->
7777

78+
二分查找
79+
7880
<!-- tabs:start -->
7981

8082
### **Python3**
8183

8284
<!-- 这里可写当前语言的特殊实现逻辑 -->
8385

8486
```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
8698
```
8799

88100
### **Java**
89101

90102
<!-- 这里可写当前语言的特殊实现逻辑 -->
91103

92104
```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+
```
93139

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+
};
94159
```
95160
96161
### **...**

solution/0800-0899/0852.Peak Index in a Mountain Array/README_EN.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,83 @@
4949

5050
## Solutions
5151

52+
binary search
53+
5254
<!-- tabs:start -->
5355

5456
### **Python3**
5557

5658
```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
5870
```
5971

6072
### **Java**
6173

6274
```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+
```
63109

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+
};
64129
```
65130
66131
### **...**
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}
Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
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+
}
812
}
9-
return r;
13+
return right;
1014
}
1115
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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

0 commit comments

Comments
 (0)