题目描述:
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 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:
if len(A)<=2:
return True
A_decrease= sorted(A,reverse=True)
A_increase = sorted(A)
return A == A_decrease or A==A_increase
其他思路:
1、两次遍历:
分别判断是否是递增序列或递减序列
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
#判断是否递增
def isIncrease(A):
N=len(A)
for i in range(N-1):
if A[i]>A[i+1]:
return False
return True
#判断是否递减
def isDecrease(A):
N=len(A)
for i in range(N-1):
if A[i]<A[i+1]:
return False
return True
return isIncrease(A) or isDecrease(A)
2、一次遍历,定义两个bool变量,分别表示这个数组是递增的,这个数组是递减的,然后依次进行遍历
class Solution:
def isMonotonic(self, A: List[int]) -> bool:
N = len(A)
Increase = True
Decrease = True
for i in range(1,N):
if A[i]<A[i-1]:
Increase = False
elif A[i]>A[i-1]:
Decrease = False
return Increase or Decrease