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