xiqe / code-train

前端算法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

有效的山脉数组

xiqe opened this issue · comments

有效的山脉数组

给定一个整数数组 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[B.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 

reply

var validMountainArray = function(A) {
    // 如果A.length<3,返回false
    if(A.length<3) return false;
    // 如果A[0]不小于A[1],返回false
    if(A[0]>=A[1]) return false;
    // 设置山峰s
    let s;
    // 因为已经判断过0,1项,所以从i=1开始循环,且s不能为最后一项,所以循环到最后第二项结束。
    for(let i=1;i<A.length-1;i++){
        // 如果A[i]>A[i+1]且s不存在,赋值s
        if(A[i]>A[i+1] && !s){
            s = i
        }
        // 如果A[i]<=A[i+1]且s存在,返回false
        if(A[i]<=A[i+1] && s<=i){
            return false
        }
    }
    // 循环结束后,判断是否存在s,如果存在返回true,如果不存在返回fasle
    if(s){
        return true
    } else {
        return false
    }
};