leetcode 单调数列

102 阅读1分钟

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

如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。

当给定的数组 A 是单调数组时返回 true,否则返回 false。

 

示例 1:

输入:[1,2,2,3]
输出:true

示例 2:

输入:[6,5,4,4]
输出:true

示例 3:

输入:[1,3,2]
输出:false

示例 4:

输入:[1,2,4,5]
输出:true

示例 5:

输入:[1,1,1]
输出:true

提示:

  • 1 <= A.length <= 50000
  • -100000 <= A[i] <= 100000

我的第一次的想法,我想首先得知道是什么顺序,然后用已有的顺序和数组的顺序比对,如果一直符合就返回 true ,否则就是 false

/**
 * @param {number[]} A
 * @return {boolean}
 */
var isMonotonic = function(A) {
  // 当数组的长度小于等于:2,那么直接返回
  const len = A.length;
  if (A.length <= 2) {
    return true;
  }
  // 找到如果是单调数列的话是升序还是降序
  const order = A[len - 1] - A[0];
  let flag;
  if (order > 0) {
    flag = (digit) => digit >= 0;
  } else if (order < 0) {
    flag = (digit) => digit <= 0;
  } else {
    flag = (digit) => digit === 0;
  }
  for (let i = 0, j = 1; j < len; i ++, j ++) {
    if (!flag(A[j] - A[i])) {
      return false
    }
  }
  return true;
};

官方讲解:单调数列


来源:力扣(LeetCode)