给定一个整数数组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; }