我是靠谱客的博主 文静纸飞机,最近开发中收集的这篇文章主要介绍LeetCode题解:896.单调数列单调数列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

单调数列

一、LeetCode题解

瞧一瞧~
  • 博健的LeetCode题解:Gitbook版本传送门
  • 博健的LeetCode题解:CSDN传送门
  • 前端进阶笔记:Gitbook传送门

二、算法题

题目

如果数组是单调递增或单调递减的,那么它是单调的。
如果对于所有 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

解法一 (暴力)

思路

  • 遍历一次,两两比较,统计相邻元素之间的升降关系
  • 单调数列之中,相邻两个元素的升降关系只能是一种

代码

var isMonotonic = function(A) {
    var compare = {
        up: 0,
        down: 0,
    }
    var res = 0
    for(let i = 0; i < A.length-1; i++){
        res = A[i+1] - A[i]
        if(res > 0){
            compare.up++
        }else if(res < 0){
            compare.down++
        }
    }
    if(compare.up > 0 && compare.down > 0){
        return false
    }
    return true
};

结果

在这里插入图片描述

解法二(单方向检查)

思路
  • 第一次只判断单调递增。
  • 第二次只判断单调递减。
代码
var isMonotonic = function(A) {
    if(A.length === 1) return true;
    var up = '', down = '';
    for(let i = 0; i < A.length-1; i++){
        if(A[i+1] - A[i] >=0) {
            up = true;
        }else{
            up = false;
            break;
        }
    }
    for(let i = 0; i < A.length-1; i++){
        if(A[i+1] - A[i] <= 0) {
            down = true;
        }else{
            down = false;
            break;
        }
    }
    return up || down
};
结果

在这里插入图片描述

最后

以上就是文静纸飞机为你收集整理的LeetCode题解:896.单调数列单调数列的全部内容,希望文章能够帮你解决LeetCode题解:896.单调数列单调数列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部