896. 单调数列
方法1
解题思路
- 先判断递增还是递减
- 然后再依次判断后续是否为单调
notice:
- 数据越界
- 前两个元素可能相等
代码
func isMonotonic(A []int) bool {
i := 0
up := false
for ;i<len(A)-1;i++{
if A[i]==A[i+1]{
continue
}
if A[i]>A[i+1]{
up = false
}else{
up = true
}
break
}
return isMonotonic2(A[i:],up)
}
func isMonotonic2(A []int,up bool)bool{
if up{
for i:=1;i<len(A);i++{
if A[i]<A[i-1]{
return false
}
}
}else{
for i:=1;i<len(A);i++{
if A[i]>A[i-1]{
return false
}
}
}
return true
}
方法2
第一种代码量比较多,第二种实现
解题思路
使用2个标志位,up
,down
分别标志数组是递增还是递减。
当数组是相等的时候,up 和down 均为true。
然后采用反向标记, 如果轮询到递增则 down
为false
,反之亦然
代码
/**
*/
func isMonotonic(A []int) bool {
up,down := true,true // 默认情况下,既是递增也是递减
for i:=1;i<len(A);i++{
if A[i]>A[i-1]{ // 后面的比前面的大,则一定不是递减
down = false
}else if A[i]<A[i-1]{ // 后面的比前面的小,则一定不是递增
up = false
}
}
return up || down
}
有疑问加站长微信联系(非本文作者)