给定一个整数数组arr,如果它是有效的山脉数组就返回 true,否则返回false。
如果A满足下述条件,那么它是一个山脉数组:
arr.length >= 3
在 0 < i < arr.length - 1 条件下,存在 i 使得:
arr[0] < arr[1] < ... arr[i-1] < arr[i]
arr[i] > arr[i+1] > ... > arr[arr.length - 1]
给定一个整数数组arr,如果它是有效的山脉数组就返回 true,否则返回false。
如果A满足下述条件,那么它是一个山脉数组:
arr.length >= 3
在 0 < i < arr.length - 1 条件下,存在 i 使得:
arr[0] < arr[1] < ... arr[i-1] < arr[i]
arr[i] > arr[i+1] > ... > arr[arr.length - 1]
[0,3,2,1]
true
[3,5,5]
false
最高点不能是数组的第一个位置或最后一个位置
class Solution {
public boolean validMountainArray(int[] arr) {
if(arr.length < 3){
return false;
}
int l = 0,r = arr.length - 1;
while(l < r - 1 && arr[l] < arr[l + 1]){
l++;
}
while(r > 1 && arr[r] < arr[r - 1]){
r--;
}
return l == r;
}
}
public boolean validMountainArray (int[] arr) {
int maxValue = Arrays.stream(arr).max().getAsInt();
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (maxValue == arr[i]) {
index = i;
break;
}
}
boolean flag = true;
int j = index;
while (j > 0) {
if (arr[j] <= arr[--j]) {
flag = false;
break;
}
}
j = index;
while (j < arr.length - 1) {
if (arr[j] <= arr[++j]) {
flag = false;
break;
}
}
return flag;
}