An array is monotonic if it is either monotone increasing or monotone decreasing.
An array A
is monotone increasing if for all i <= j
, A[i] <= A[j]
. An array A
is monotone decreasing if for all i <= j
, A[i] >= A[j]
.
Return true
if and only if the given array A
is monotonic.
Example 1:
Input: [1,2,2,3] Output: true
Example 2:
Input: [6,5,4,4] Output: true
Example 3:
Input: [1,3,2] Output: false
Example 4:
Input: [1,2,4,5] Output: true
Example 5:
Input: [1,1,1] Output: true
思路:
1,判断是不是为1 ,是则直接返回true
2,设置递增、递减标志位,遍历时做比较,并使相应的标志位增加
3,判断标志位的值,若为a.length-1则为单调
#pragma once
#include <iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool isMonotonic(vector<int>& A) {
//如果只有一位数,直接返回1
if (A.size() == 1)
{
return true;
}
//两个标志,分别表示递增和递减的个数
int increase = 0;
int less = 0;
for (int i = 0; i < A.size()-1; i++)
{
//满足递增,则递增标志位+1.
if (A[i] >= A[i + 1])
{
increase++;
}
//满足递减,则递减标志位+1.
if (A[i] <= A[i + 1])
{
less++;
}
}
//只要递增或者递减标志位为A长度-1,则表示单调
if (increase == A.size()-1 || less == A.size()-1)
{
return true;
}
else
{
return false;
}
}
};