896. 单调数列

896. 单调数列

一、题目描述

如果数组是单调递增或单调递减的,那么它是单调的。

  • 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。
  • 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。

当给定的数组 A是单调数组时返回 true,否则返回 false。

二、解题思路

先利用首尾2个元素判断递增还是递减。

然后遍历数组,如果发现和首尾元素的标记不一样,就说明不是单调的。

三、复杂度分析

  • 时间 O(n)
  • 空间 O(1)

四、参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 是否是单调数列
* @param nums 数组
* @return true/false
*/
private boolean isMonotonic(int[] nums) {
boolean flag = nums[0] <= nums[nums.length - 1];
for (int i = 1; i < nums.length; i++) {
if (flag) {
if (nums[i] < nums[i - 1]) {
return false;
}
} else {
if (nums[i] > nums[i - 1]) {
return false;
}
}
}
return true;
}
作者

jiaduo

发布于

2022-09-18

更新于

2023-04-02

许可协议