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

40 阅读2分钟

问题描述

小S最近在研究一些数组的性质,她发现有一种非常有趣的数组被称为 单调数组。如果一个数组是单调递增或单调递减的,那么它就是单调的。

  • 当对于所有索引i <= j时,nums[i] <= nums[j],数组nums是单调递增的。
  • 当对于所有索引i <= j时,nums[i] >= nums[j],数组nums是单调递减的。

你需要编写一个程序来判断给定的数组nums是否为单调数组。如果是,返回true,否则返回false


测试样例

样例1:

输入:nums = [1, 2, 2, 3]
输出:True

样例2:

输入:nums = [6, 5, 4, 4]
输出:True

样例3:

输入:nums = [1, 3, 2, 4, 5]
输出:False

单调递增数组:数组中的每一个元素都不小于前一个元素。换句话说,对于数组中的任意两个元素 i,j,都满足 nums[i]≤nums[j]。 单调递减数组:数组中的每一个元素都不大于前一个元素。即对于任意 i≤j都满足 nums[i]≥nums[j]。 需要判断给定的数组是否是单调数组,若是单调数组,返回 True;否则返回 False。 可以通过以下的方法判断一个数组是否是单调数组: 我们可以遍历一次数组,分别检查数组是否满足递增或递减的条件。如果同时不满足这两种情况,数组就不是单调的。

具体来说,我们可以使用一个布尔变量来分别记录数组是否递增或递减:

  • 如果数组满足递增条件(即当前元素小于或等于下一个元素),我们继续检查是否满足递增规则。
  • 如果数组满足递减条件(即当前元素大于或等于下一个元素),我们继续检查是否满足递减规则。
  • 如果同时满足这两个条件中的任何一个,我们可以返回 True。否则,返回 False。
  1. 首先检查数组的长度。如果数组的长度小于等于 1,直接返回 True,因为单个元素或空数组本身就是单调的。
  2. 遍历数组中的每个元素,检查是否满足递增或递减的条件: 如果某个元素小于它后面的元素,标记为递增。 如果某个元素大于它后面的元素,标记为递减。 最后,返回是否满足递增或递减条件。 由于只遍历了一次数组,故时间复杂度为O(n)