3妹:2哥,端午节快到了,出去运动运动,我们去爬山怎么样?既可以锻炼身体,又能放松放松。
2哥:爬山多累啊, 天还那么热…… 你不是刘畊宏女孩嘛,在家跑操得了。
3妹:跳本草纲目跳得我浑身酸痛,走出去户外运动吧。
2哥:额,好吧,正好我这里有一道关于爬山的题目,你做出来的话我就跟你出去。
3妹:放马过来吧。
题目
给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false。
让我们回顾一下,如果 arr 满足下述条件,那么它是一个山脉数组:
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]

示例 1:
输入:arr = [2,1]
输出:false
示例 2:
输入:arr = [3,5,5]
输出:false
示例 3:
输入:arr = [0,3,2,1]
输出:true
提示:
1 <= arr.length <= 10^4
0 <= arr[i] <= 10^4
3妹:这有何难,看我5分钟搞定。
java代码:
class Solution {
public boolean validMountainArray(int[] arr) {
int N = arr.length;
int i = 0;
// 递增扫描
while (i + 1 < N && arr[i] < arr[i + 1]) {
i++;
}
// 最高点不能是数组的第一个位置或最后一个位置
if (i == 0 || i == N - 1) {
return false;
}
// 递减扫描
while (i + 1 < N && arr[i] > arr[i + 1]) {
i++;
}
return i == N - 1;
}
}
网友评论