0
点赞
收藏
分享

微信扫一扫

2019-12-28-LeetCode【35. 搜索插入位置】【53. 最大子序和】


​​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[B.length - 1]

示例

示例 1:

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

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

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

提示:

  1. ​0 <= A.length <= 10000​
  2. ​0 <= A[i] <= 10000 ​

思路

1、遍历每一个数直到找到最高点,应该满足:在这个点左侧是增的,在这个点右侧是减的。

2、线性扫描,判断山峰的位置和最后递减的位置。

代码

class Solution {
public:
// bool validMountainArray(vector<int>& A) {
// int len=A.size();
// for(int i=1;i<len-1;i++)
// {
// int flag=1;
// int left=0;
// while(left<i)
// {
// if(A[left+1]<=A[left])
// {flag=0;break;}
// left++;
// }

// if(flag==1){
// int right=len-1;
// while(right>i)
// {
// if(A[right-1]<=A[right])
// {flag=0;break;}
// right--;
// }


// }
// if(flag==1) return 1;

// }
// return 0;

// }

//线性扫描
bool validMountainArray(vector<int>& A) {
int len=A.size();
int i=0;
while(i+1<len&&A[i+1]>A[i])
{
i++;
}

if(i==0||i==len-1)
return 0;

int j=i;
while(j+1<len&&A[j+1]<A[j])
{
j++;
}
return j==len-1;

}

};

 

 

 

举报

相关推荐

0 条评论