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

52 阅读2分钟

题目分析

题目要求判断一个数组是否是单调的。一个数组被认为是单调的,如果它是单调递增的或单调递减的。

  • 单调递增:对于所有 inums[i] <= nums[i+1]
  • 单调递减:对于所有 inums[i] >= nums[i+1]

通过上述代码,我们可以通过一次遍历来检查数组是否满足单调性的条件。具体步骤如下:

  1. 初始化两个布尔变量 increasing 和 decreasing 为 True
  2. 遍历数组,从第二个元素开始,与前一个元素进行比较。
  3. 如果发现任何一对元素不满足单调递增或单调递减的条件,相应地将 increasing 或 decreasing 设置为 False
  4. 最后,如果数组是单调递增或单调递减的,则返回 True;否则,返回 False

代码详解

函数定义

def solution(nums: list) -> bool:
  • 这里定义了一个名为 solution 的函数,它接受一个列表 nums 作为参数,并返回一个布尔值。

初始化变量

    increasing = decreasing = True
  • 定义了两个布尔变量 increasing 和 decreasing,初始值都为 True。这两个变量分别用于记录数组是否是单调递增和单调递减的。

遍历数组

    for i in range(1, len(nums)):
  • 使用 for 循环从索引 1 开始遍历数组 nums,直到最后一个元素。

检查单调性

        if nums[i] > nums[i-1]:
            decreasing = False
        elif nums[i] < nums[i-1]:
            increasing = False
  • 在循环中,比较当前元素 nums[i] 和前一个元素 nums[i-1]

    • 如果 nums[i] > nums[i-1],则说明当前元素比前一个元素大,数组不是单调递减的,因此将 decreasing 设置为 False
    • 如果 nums[i] < nums[i-1],则说明当前元素比前一个元素小,数组不是单调递增的,因此将 increasing 设置为 False

返回结果


    return increasing or decreasing
  • 最后,返回 increasing 或 decreasing 中的一个。如果数组是单调递增或单调递减的,则至少有一个变量为 True,函数返回 True;否则,返回 False

主程序


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)
  • 这部分代码用于测试 solution 函数。它调用 solution 函数并打印结果,验证函数的正确性。