941. 有效的山脉数组

题目

给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false

让我们回顾一下,如果 arr 满足下述条件,那么它是一个山脉数组:

  • A.length >= 3
  • 0 < i < A.length - 1 条件下,存在 i 使得:
    • A[0] < A[1] < … A[i-1] < A[i]
    • A[i] > A[i+1] > … > A[A.length - 1]

示例1:

1
2
输入:[2,1]
输出:false

示例2:

1
2
输入:[3,5,5]
输出:false

示例3:

1
2
输入:[0,3,2,1]
输出:true

提示:

  1. 0 <= A.length <= 10000
  2. 0 <= A[i] <= 10000

解法

解法一:

找到最高点,判断剩下的是不是非递增的(如果有剩下的元素的话)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public boolean validMountainArray(int[] A) {
int index = 0;
while (index < A.length - 1 && A[index + 1] > A[index]) {
index++;
}

if (0 == index || A.length - 1 == index) {
// 单调递减或者单调递增
return false;
}

while (index < A.length - 1) {
if (A[index] <= A[index + 1]) {
return false;
}
index++;
}
return true;
}
0%