Files
2020-08-11 23:46:26 +08:00

95 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [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. `1 <= A.length <= 50000`
2. `-100000 <= A[i] <= 100000`
## 题目大意
如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= jA[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= jA[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true否则返回 false。
## 解题思路
- 判断给定的数组是不是单调(单调递增或者单调递减)的。
- 简单题,按照题意循环判断即可。
## 代码
```go
func isMonotonic(A []int) bool {
if len(A) <= 1 {
return true
}
if A[0] < A[1] {
return inc(A[1:])
}
if A[0] > A[1] {
return dec(A[1:])
}
return inc(A[1:]) || dec(A[1:])
}
func inc(A []int) bool {
for i := 0; i < len(A)-1; i++ {
if A[i] > A[i+1] {
return false
}
}
return true
}
func dec(A []int) bool {
for i := 0; i < len(A)-1; i++ {
if A[i] < A[i+1] {
return false
}
}
return true
}
```