LeetCode: 896. Monotonic Array

题目描述

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

Note:

1 <= A.length <= 50000
-100000 <= A[i] <= 100000

解题思路

遍历数组,标记升序/降序情况。当发现后面的元素与前面的标记冲突时,则返回 false, 否则返回 true

AC 代码

class Solution {
public:
    bool isMonotonic(vector<int>& A) {
        bool ans = true;
        int isComp = 0; // 0: 等于 1: 降序 2: 升序

        for(int i = 0; i < A.size()-1; ++i)
        {
            if(A[i] > A[i+1])
            {
                if(isComp == 0) isComp = 2;
                else if(isComp == 1) return false;
            }
            else if(A[i] < A[i+1])
            {
                if(isComp == 0) isComp = 1;
                else if(isComp == 2) return false;
            }
        }

        return ans;
    }
};