#include<vector>usingnamespace std;
boolvalidMountainArray(vector<int>& arr) {
int n = arr.size(), i =0;
if (n <3) return false;
// walk up
while (i +1< n && arr[i] < arr[i +1]) i++;
// peak can't be first or last
if (i ==0|| i == n -1) return false;
// walk down
while (i +1< n && arr[i] > arr[i +1]) i++;
return i == n -1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
funcvalidMountainArray(arr []int) bool {
n, i:= len(arr), 0ifn < 3 {
returnfalse }
// walk upfori+1 < n&&arr[i] < arr[i+1] {
i++ }
// peak can't be first or lastifi==0||i==n-1 {
returnfalse }
// walk downfori+1 < n&&arr[i] > arr[i+1] {
i++ }
returni==n-1}
1
2
3
4
5
6
7
8
9
10
11
publicbooleanvalidMountainArray(int[] arr) {
int n = arr.length, i = 0;
if (n < 3) returnfalse;
// walk upwhile (i + 1 < n && arr[i]< arr[i + 1]) i++;
// peak can't be first or lastif (i == 0 || i == n - 1) returnfalse;
// walk downwhile (i + 1 < n && arr[i]> arr[i + 1]) i++;
return i == n - 1;
}
1
2
3
4
5
6
7
8
9
funvalidMountainArray(arr: IntArray): Boolean {
val n = arr.size
var i = 0if (n < 3) returnfalsewhile (i + 1 < n && arr[i] < arr[i + 1]) i++if (i ==0|| i == n - 1) returnfalsewhile (i + 1 < n && arr[i] > arr[i + 1]) i++return i == n - 1}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
defvalidMountainArray(arr):
n = len(arr)
if n <3:
returnFalse i =0# walk upwhile i +1< n and arr[i] < arr[i +1]:
i +=1# peak can't be first or lastif i ==0or i == n -1:
returnFalse# walk downwhile i +1< n and arr[i] > arr[i +1]:
i +=1return i == n -1
1
2
3
4
5
6
7
8
9
10
11
12
13
pubfnvalid_mountain_array(arr: Vec<i32>) -> bool {
let n = arr.len();
if n <3 { returnfalse; }
letmut i =0;
while i +1< n && arr[i] < arr[i +1] {
i +=1;
}
if i ==0|| i == n -1 { returnfalse; }
while i +1< n && arr[i] > arr[i +1] {
i +=1;
}
i == n -1}
1
2
3
4
5
6
7
8
9
functionvalidMountainArray(arr: number[]):boolean {
constn=arr.length;
leti=0;
if (n<3) returnfalse;
while (i+1<n&&arr[i] <arr[i+1]) i++;
if (i===0||i===n-1) returnfalse;
while (i+1<n&&arr[i] >arr[i+1]) i++;
returni===n-1;
}