题目:
小S最近在研究一些数组的性质,她发现有一种非常有趣的数组被称为 单调数组。如果一个数组是单调递增或单调递减的,那么它就是单调的。
当对于所有索引i <= j时,nums[i] <= nums[j],数组nums是单调递增的。 当对于所有索引i <= j时,nums[i] >= nums[j],数组nums是单调递减的。 你需要编写一个程序来判断给定的数组nums是否为单调数组。如果是,返回true,否则返回false。
测试样例
样例一
输入:nums = [1, 2, 2, 3] 输出:True
样例二
输入:nums = [6, 5, 4, 4] 输出:True
样例三
输入:nums = [1, 3, 2, 4, 5] 输出:False
题目难度:简单
解题语言:python
解题思路: 1.首先,我们需要理解如何判断一个数组是单调递增还是单调递减。 2.初始化标志:我们可以使用两个布尔变量来分别表示数组是否是单调递增或单调递减。 遍历数组:从第二个元素开始,逐个比较当前元素和前一个元素。 3.更新标志: 1)如果当前元素大于前一个元素,则数组可能是单调递增的。 2)如果当前元素小于前一个元素,则数组可能是单调递减的。 3)如果当前元素等于前一个元素,则继续检查下一个元素。 4.判断结果:如果在遍历过程中,发现既不是单调递增也不是单调递减的情况,则返回False。如果遍历结束时,两个标志中至少有一个为True,则返回True。
代码:
def solution(nums: list) -> bool:
if not nums:
return True
is_increasing = True
is_decreasing = True
for i in range(1, len(nums)):
if nums[i] > nums[i - 1]:
is_decreasing = False
elif nums[i] < nums[i - 1]:
is_increasing = False
return is_increasing or is_decreasing
if __name__ == '__main__':
print(solution(nums=[1, 2, 2, 3]) == True)
print(solution(nums=[6, 5, 4, 4]) == True)
print(solution(nums=[1, 3, 2, 4, 5]) == False)