Skip to content

Latest commit

 

History

History
50 lines (46 loc) · 1.23 KB

isMonotonic.md

File metadata and controls

50 lines (46 loc) · 1.23 KB
/*
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。
当给定的数组 A 是单调数组时返回 true,否则返回 false。
 */
/**
 * @param {number[]} A
 * @return {boolean}
 */
var isMonotonic = function (A) {
  if (A.length <= 2) return true;
  let i = 1;
  while(i < A.length &&A[i] === A[i-1]) i ++
  if(i=== A.length) return true
  if (A[i-1] < A[i]) {
    while (i < A.length && A[i - 1] <= A[i]) {
      i++;
    }
    if (i === A.length) return true;
    return false;
  }
  if (A[i-1] > A[i]) {
    while (i < A.length && A[i - 1] >= A[i]) {
      i++;
    }
    if (i === A.length) return true;
    return false;
  }
};

//遍历数组 AA,若既遇到了 A[i]>A[i+1]又遇到了 A[i']<A[i'+1],则说明 AA 既不是单调递增的,也不是单调递减的
var isMonotonic2 = function(A) {
  let inc = true, dec = true;
  const n = A.length;
  for (let i = 0; i < n - 1; ++i) {
    if (A[i] > A[i + 1]) {
      inc = false;
    }
    if (A[i] < A[i + 1]) {
      dec = false;
    }
  }
  return inc || dec;
};


console.log(isMonotonic([1,1,0]));