难度简单
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j
,A[i] <= A[j]
,那么数组 A
是单调递增的。 如果对于所有 i <= j
,A[i]> = A[j]
,那么数组 A
是单调递减的。
当给定的数组 A
是单调数组时返回 true
,否则返回 false
。
思路:
针对单调递减数组的判断,由于没有确定是否为递增,因此需要至少两步:
一:需要判断该数组是 递增 还是 递减;
二:根据当前判断的单调性,确定整个数组是否满足单调性。
代码:
bool isMonotonic(vector<int>& A) {
int len=A.size();
if(len<2) return true;
int flg=0; // 0:未判定 1:递增 2:递减
for(int i=1;i<len;++i){
if(0==flg){
if(A[i]>A[i-1]) flg=1;
else if(A[i]<A[i-1]) flg=2;
}
else if(1==flg && A[i]<A[i-1]) return false;
else if(2==flg && A[i]>A[i-1]) return false;
}
return true;
}