896. Monotonic Array*
https://leetcode.com/problems/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
C++ 实现 1
思路: 通过数组中最后一个元素和第一个元素的差值判断初步判断数组是单调递增还是单调递减. 这里面有个难点在于, 如果两个元素相等, 无法准确判断. 因此, 还需要遍历数组, 如果前后两个元素相等, 那么 continue
(这一步非常重要, 否则最后结果就会出错). 否则, 判断数组是单调递增, 还是递减.
class Solution {
public:
bool isMonotonic(vector<int>& A) {
bool isIncreasing = false;
if (A.back() - A.front() >= 0) isIncreasing = true;
for (int i = 1; i < A.size(); ++ i) {
if (A[i] - A[i - 1] == 0) continue;
bool res = A[i] - A[i - 1] > 0;
if (res != isIncreasing) return false;
}
return true;
}
};