LeetCode每日一题 (53) 941. 有效的山脉数组

941. 有效的山脉数组


在这里插入图片描述
在这里插入图片描述


class Solution {
    
    
public:
    bool validMountainArray(vector<int>& A) {
    
    
        if(A.size()<3) return false;
        int fg=A[1]-A[0]; // fg用来纪录前面时刻山脉的趋势
        if(fg<=0) return false;
        for(int i=1;i<A.size();i++){
    
    
            if(A[i]-A[i-1]==0) return false;
            else if(fg>0){
    
    
                fg=A[i]-A[i-1];
            }
            else{
    
    
                if(A[i]-A[i-1]>0) return false;
            }
        }
        // 循环结束,如果fg<0说明true
        if(fg<0) return true;
        else return false;
    }
};

在这里插入图片描述


class Solution {
    
    
public:
    bool validMountainArray(vector<int>& A) {
    
    
        int len=A.size();
        int p=1;
        if(len<3 || A[1]-A[0]<=0) return false;
        // 先增
        while(p<len){
    
    
            if(A[p]-A[p-1]==0) return false;
            else if(A[p]-A[p-1]>0) p++;
            else break;
        }
        // 下降
        while(p<len){
    
    
            if(A[p]-A[p-1]==0) return false;
            else if(A[p]-A[p-1]<0) p++;
            else break;
        }
        // 结束
        if(p!=len || A[len-1]-A[len-2]>=0) return false;
        else return true;
    }
};

在这里插入图片描述


class Solution {
    
    
public:
    // 双指针 
    bool validMountainArray(vector<int>& A) {
    
    
        int len=A.size();
        int start=0,end=len-1;
        if(len <3 || A[1]-A[0]<=0 || A[end-1]-A[end]<=0) return false;
        while(start<len){
    
    
            if(A[start+1]-A[start]>0) start++;
            else if(A[start+1]-A[start]==0) return false;
            else break;
        }
        while(end>start){
    
    
            if(A[end]-A[end-1]<0) end--;
            else if(A[end]-A[end-1]==0) return false;
            else break;
        }
        if(start==end) return true;
        else return false;
    }
};

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45021180/article/details/109480608