941. 有效的山脉数组

941. 有效的山脉数组

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

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

    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:

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

示例 2:

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

示例 3:

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

提示:

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

分析:要想是山脉数组,数组必须先增后减;那么首先就要判断什么时候开始减?加入从角标为i的元素开始减,那么就要判断i后面的元素是否一直在减?若能够判断到最后一个元素还在减,那么久说明是山脉数组,否则就不是。

代码如下:

class Solution {
    public boolean validMountainArray(int[] A) {
        int N = A.length;//定义数组长度
        int i = 0;
        while (i+1 < N && A[i] < A[i+1])//找到数组开始减的角标
            i++;
        if (i == 0 || i == N-1)//如果i==0;说明数组只有一个元素,不可能是山脉数组,返回false
            return false;      //如果i==N-1;说明到最后一个元素还没有开始减,不是山脉数组,返回false
        while (i+1 < N && A[i] > A[i+1] )
            i++;

        return i == N-1;    //如果能判断到N-1处且条件成立,则说明是山脉数组
    }
}

运行结果:

一旦遇到相等就一定不是山脉数组。

 

 

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读