- 如果数组是单调递增或单调递减的,那么它是 单调 的。
- 如果对于所有
i <= j
,nums[i] <= nums[j]
,那么数组 nums
是单调递增的。 如果对于所有 i <= j
,nums[i]> = nums[j]
,那么数组 nums
是单调递减的。
- 当给定的数组
nums
是单调数组时返回 true
,否则返回 false
。
示例
输入
:nums = [1,2,2,3], 输出
: true
输入
:nums = [6,5,4,4], 输出
: true
输入
:nums = [6,5,4,4], 输出
: false
提示
1 <= nums.length <= Math.pow(10, 5)
-Math.pow(10, 5) <= nums[i] <= Math.pow(10, 5)
思路
- 当数组内只有一个元素时,必定是单调的,返回
true
- 当数组的第一项小于最后一项时,暂定为单调递增数组,遍历数组,只要出现前一项大于后一项,则证明不是单调递增数组,返回
false
- 当数组的第一项大于最后一项时,暂定为单调递减数组,遍历数组,只要出现前一项小于后一项,则证明不是单调递减数组,返回
false
- 当数组第一项等于最后一项时,只有一种情况是单调数组,就是数组所有项都相等
代码
function isMonotonic(nums: number[]): boolean {
if(nums.length === 1) return true;
if(nums[0] < nums[nums.length - 1]){
for(let i = 0; i < nums.length - 1; i++){
if(nums[i] > nums[i+1]) return false
}
}else if(nums[0] > nums[nums.length - 1]){
for(let i = 0; i < nums.length - 1; i++){
if(nums[i] < nums[i+1]) return false
}
}else{
for(let i = 0; i < nums.length - 1; i++){
if(nums[i] !== nums[i+1]) return false
}
}
return true;
};