【力扣刷题】941.有效的山脉数组-相向双指针

给定一个整数数组 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]

 

 

示例 1:

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

示例 2:

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

示例 3:

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

 

提示:

  • 1 <= arr.length <= 104
  • 0 <= arr[i] <= 104

 

class Solution {
public:
    bool validMountainArray(vector<int>& arr) {
        int l=0,r=arr.size()-1;
        if(arr.size()==1)return false;
        while(l<arr.size()){
            if(arr[l]<arr[l+1]){
                l++;
            }else{
                break;
            }
        }
        while(r>0){
            if(arr[r]<arr[r-1]){
                r--;
            }else{
                break;
            }
        }
        if(l==r){
            if(l!=0&&l!=arr.size()-1)return true;
            else return false;
        }else return false;
    }
};

 

版权声明:
作者:Zhang, Hongxing
链接:http://zhx.info/archives/365
来源:张鸿兴的学习历程
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录