本文最后更新于:2023年3月19日 晚上
Lt.896. 单调数列
如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 i <= j
,A[i] <= A[j]
,那么数组 A
是单调递增的。 如果对于所有 i <= j
,A[i]> = A[j]
,那么数组 A
是单调递减的。
当给定的数组 A
是单调数组时返回 true
,否则返回 false
。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
提示:
1 <= A.length <= 50000
-100000 <= A[i] <= 100000
思路
遍历所有数,直到当前数和上一个数不同,这时候判断是递增还是递减,之后的数如果不符合要求则直接返回 false。
改进
用两个状态记录是否有出现递增或递减状态,如果都有的话,返回 false。
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
var isMonotonic = function (A) { if (A.length === 1) return true; let isIncrease = null; for (let i = 1; i < A.length; i++) { if (isIncrease === null && A[i] !== A[i - 1]) { isIncrease = A[i] > A[i - 1]; } else { if (isIncrease && A[i] < A[i - 1]) return false; else if (!isIncrease && A[i] > A[i - 1]) return false; } } return true; };
|
改进
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
var isMonotonic = function (A) { if (A.length === 1) return true; let isIncrease = false, isDecrease = false; for (let i = 0; i < A.length - 1; i++) { if (A[i] < A[i + 1]) isIncrease = true; if (A[i] > A[i + 1]) isDecrease = true; if (isIncrease && isDecrease) return false; } return true; };
|