题目
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。
当给定的数组 A 是单调数组时返回 true,否则返回 false。
示例
输入:[1,2,2,3] 输出:true
输入:[6,5,4,4] 输出:true
输入:[1,3,2] 输出:false
输入:[1,2,4,5] 输出:true
提示:
1 <= A.length <= 50000
-100000 <= A[i] <= 100000
解题思路:
只要将数组遍历,将 A[i]<A[i+1] 和 A[i]>A[i+1] 这种既不单调递增,也不单调递减的情况记录下来。将inc和dec初始为true,发现分别有数值减小和增大的情况都会变为false,那么只有两者有一个为true,就意味着该数组单调。一旦都为false,则意味着既不递增,也不递减。
class Solution:
def isMonotonic(self, A):
N = len(A)
inc, dec = True, True
for i in range(1, N):
if A[i] < A[i - 1]:
inc = False
if A[i] > A[i - 1]:
dec = False
if not inc and not dec:
return False
return True