问题描述
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。
当给定的数组 A 是单调数组时返回 true,否则返回 false。
示例 1:
输入:[1,2,2,3]
输出:true
示例 2:
输入:[6,5,4,4]
输出:true
示例 3:
输入:[1,3,2]
输出:false
示例 4:
输入:[1,2,4,5]
输出:true
示例 5:
输入:[1,1,1]
输出:true
思路分析及代码实现
方法一:一遍遍历并计数
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
n = len(A)
z = 0
j = 0
if n == 1:
return True
for i in range(n-1):
if A[i+1]-A[i] > 0:
z += 1
elif A[i+1]-A[i] < 0:
j += 1
else:
z += 1
j += 1
if z == n-1:
return True
elif j == n-1:
return True
else:
return False
方法二:一遍遍历判断bool是否相同
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
n = len(A)
increase = True
decrease = True
for i in range(n-1):
if A[i] < A[i+1]:
increase = False
if A[i] > A[i+1]:
decrease = False
if increase == decrease and increase == False:
return False
return True
方法三: 升降排序判断是否与原式相同
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
if A == sorted(A):
return True
elif A == sorted(A,reverse=True):
return True
else:
return False