我直接写了一个判断是否单调不增或单调不减的函数,然后直接调用。
bool isIncreasing(vector<int>& A)
{
for(int i = 0; i < A.size()-1; ++i)
if(A[i] > A[i+1])
return false;
return true;
}
bool isDecreasing (vector<int>& A)
{
for(int i = 0; i < A.size()-1; ++i)
if(A[i] < A[i+1])
return false;
return true;
}
bool isMonotonic(vector<int>& A) {
if(isIncreasing(A) || isDecreasing(A))
return true;
else
return false;
}
但这样可能需要遍历vector两本,下面是他人更好些解法,最多只需遍历一遍
bool isMonotonic(vector<int>& A) {
for(int i=0; i<A.size()-1;i++){
if(A[i+1] > A[i]){
for(int j=i;j<A.size()-1;j++){
if(A[j+1] < A[j]) return false;
}
break;
}
if(A[i+1] < A[i]){
for(int j=i;j<A.size()-1;j++){
if(A[j+1] > A[j]) return false;
}
break;
}
}
return true;
}