题目:
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。
当给定的数组 A 是单调数组时返回 true,否则返回 false。
方法一:标记执行
实现分析:
1、flag=None为未执行或相等的情况
2、flag=True表示当前数列为递增
(1)若出现A[i] > A[i+1] and flag == True情况,则同时出现了递减和递增,直接return False。
(2)若后面序列都是A[i] < A[i+1],不会执行if…elif…的情况,最后返回return True。
3、flag=False表示当前数列为递减
(1)若出现A[i] < A[i+1] and flag == False情况,则同时出现了递减和递增,直接return False。
(2)若后面序列都是A[i] > A[i+1],不会执行if…elif…的情况,最后返回return True。
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
flag = None
for i in range(len(A)-1):
if A[i] < A[i+1] and flag == None:
flag = True # 有过递增
elif A[i] > A[i+1] and flag == True:
return False
elif A[i] > A[i+1] and flag == None:
flag = False #递减
elif A[i] < A[i+1] and flag == False:
return False
return True
方法二:排序比较
实现分析:
递增和递减都是一个有序数列,递增数列和原列表相等,递减数列和原列表相反。
def isMonotonic(self,A):
return sorted(A) == A or sorted(A) == A[::-1]