判断数组是否单调 | 豆包MarsCode AI刷题

66 阅读2分钟

题目:

小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)