目录

LC 896. 单调数列 (opens new window) (opens new window)

简单

# 问题描述

如果数组是单调递增或单调递减的,那么它是 单调 的。

如果对于所有 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]
输出:false

提示:

  • 1 <= nums.length <= 105
  • -105 <= nums[i] <= 105

# 一次遍历

使用两个标记用来标记当前数组的单调性,若两个标记同时发生变化,说明数组不是单调的。

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var isMonotonic = function (nums) {
  let inc = 0
  let dec = 0
  for (let i = 1; i < nums.length; i++) {
    if (nums[i] < nums[i - 1]) {
      inc = 1
    } else if (nums[i] > nums[i - 1]) {
      dec = 1
    }
    if (inc + dec === 2) return false
  }
  return true
}
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)
上次更新: 2023/01/31 19:48:05

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!