美文网首页
教3妹学编程-941. 有效的山脉数组

教3妹学编程-941. 有效的山脉数组

作者: 程序员小2 | 来源:发表于2022-06-02 09:45 被阅读0次

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]

image.png

示例 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;
    }
}

相关文章

网友评论

      本文标题:教3妹学编程-941. 有效的山脉数组

      本文链接:https://www.haomeiwen.com/subject/tpxqmrtx.html