各位题友大家好! 今天是 @负雪明烛 坚持日更的第 35 天。今天力扣上的每日一题是「896. 单调数列」。
解题思路
两次遍历
- 遍历两次,分别判断是否为单调递增的数列、单调递减的数列。
class Solution:def isMonotonic(self, A):return self.isIncreasing(A) or self.isDecreasing(A)def isIncreasing(self, A):N = len(A)for i in range(N - 1):if A[i + 1] - A[i] < 0:return Falsereturn Truedef isDecreasing(self, A):N = len(A)for i in range(N - 1):if A[i + 1] - A[i] > 0:return Falsereturn True
- 时间复杂度:
- 空间复杂度:
一次遍历
也可以遍历一次:
- 使用 inc 标记数组是否单调上升的,如果有下降,则将其置为 false;
- 使用 dec 标记数组是否单调递减的,如果有上升,则将其置为 false。
那么:
- 如果数组是单调的,那么 inc 和 dec 会至少有一个一直保持 true。
- 如果 inc 和 dec 同时为 false,说明数列中既有递增的情况,也有递减的情况,所以数列就不是单调的。
class Solution:def isMonotonic(self, A):N = len(A)inc, dec = True, Truefor i in range(1, N):if A[i] < A[i - 1]:inc = Falseif A[i] > A[i - 1]:dec = Falseif not inc and not dec:return Falsereturn True
刷题心得
周末终于给了个 Easy 题,不用再花两三个小时写题解了。周末愉快!
OK,以上就是 @负雪明烛 写的今天题解的全部内容了,如果你觉得有帮助的话,求赞、求关注、求收藏。如果有疑问的话,请在下面评论,我会及时解答。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。
祝大家牛年大吉!AC 多多,Offer 多多!我们明天再见!
