leetcode--941.有效的山脉

问题描述:
在这里插入图片描述
示例1.

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

示例2.

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

示例3.

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

思路:

1.)先for循环遍历整个数组,找出第一个数字以及角标i,这个数字满足,A[i]>A[i-1]&&A[i]>A[i+1].
2.)定义一个boolean类型的变量flag,初始值为true
3.)左右各进行两个for循环
左边的for循环角标left从0开始小于i,如果存在一个A[left]>=A[left+1],令flag=false.并break出循环.
如果左边for循环的flag值为true的话再进行右边的for循环,右边的for循环角标right从A.length-1开始大于i,如果存在一个A[right-1]<=A[right],令flag=false.并break出循环
最后返回flag就行.此时flag的值就是该数组是否是"山脉数组"

java代码

class Solution {
    public boolean validMountainArray(int[] A) {
        if(A.length==0||A.length==1||A.length==2){
            return false;
        }
        int k=0;
        for(int i=1;i<A.length-1;i++){
            if(A[i]>A[i-1]&&A[i]>A[i+1]){
                k=i;
                break;
            } 
        }
        if(k==0){
            return false;
        }
        boolean flag=true;
        for(int left=0;left<k;left++){
            if(A[left]>=A[left+1]){
                flag=false;
                break;
            }
        }
        if(flag==true){
            for(int right=A.length-1;right>k;right--){
                if(A[right-1]<=A[right]){
                    flag=false;
                    break;
                }
            }
        }
        return flag;
    }
}

在这里插入图片描述

发布了73 篇原创文章 · 获赞 7 · 访问量 3573

猜你喜欢

转载自blog.csdn.net/weixin_43801718/article/details/103424274