0896. 单调数列
大约 2 分钟
---
0896. 单调数列
- 标签:数组
- 难度:简单
题目链接
题目大意
描述:
如果数组是单调递增或单调递减的,那么它是「单调」的。
如果对于所有 ,,那么数组 是单调递增的。如果对于所有 ,,那么数组 是单调递减的。
要求:
当给定的数组 是单调数组时返回 true,否则返回 false。
说明:
- 。
- 。
示例:
- 示例 1:
输入:nums = [1,2,2,3]
输出:true- 示例 2:
输入:nums = [6,5,4,4]
输出:true解题思路
思路 1:一次遍历
这道题要求判断数组是否单调(单调递增或单调递减)。
算法步骤:
- 使用两个布尔变量 和 分别表示数组是否单调递增和单调递减,初始值都为 。
- 遍历数组,比较相邻元素:
- 如果 ,说明不是单调递减,设置 。
- 如果 ,说明不是单调递增,设置 。
- 最后返回 或 是否为 。
思路 1:代码
class Solution:
def isMonotonic(self, nums: List[int]) -> bool:
n = len(nums)
if n <= 1:
return True
# 标记是否单调递增和单调递减
increasing = True
decreasing = True
# 遍历数组,比较相邻元素
for i in range(1, n):
if nums[i] > nums[i - 1]:
decreasing = False # 不是单调递减
if nums[i] < nums[i - 1]:
increasing = False # 不是单调递增
# 只要满足其中一个条件即可
return increasing or decreasing思路 1:复杂度分析
- 时间复杂度:,其中 是数组的长度。只需遍历一次数组。
- 空间复杂度:,只使用常数额外空间。