LeetCode.896-单调数组(Monotonic Array)

这是悦乐书的第345次更新,第369篇原创

java

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第210题(顺位题号是896)。若是数组单调递增或单调递减,则数组是单调的。若是对于全部i <= j,A[i] <= A[j],则数组A是单调递增的。若是对于全部i <= j,A[i] >= A[j],则数组A是单调递减的。当且仅当给定的数组A是单调的时,才返回true。例如:算法

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

输入:[6,5,4,4]
输出:true数据结构

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

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

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

注意数据结构与算法

  • 1 <= A.length <= 50000循环

  • -100000 <= A [i] <= 100000

    方法

02 第一种解法

使用两个循环,一个判断是否递增,一个判断是否递减,只要其中一个符合条件便可返回true。

public boolean isMonotonic(int[] A) {
    return isIncrease(A) || isDecrease(A);
}

public boolean isIncrease(int[] A) {
    for (int i=0; i<A.length-1; i++) {
        if (A[i] > A[i+1]) {
            return false;
        }
    }
    return true;
}

public boolean isDecrease(int[] A) {
    for (int i=0; i<A.length-1; i++) {
        if (A[i] < A[i+1]) {
            return false;
        }
    }
    return true;
}


03 第二种解法

也能够只是用一次循环。

public boolean isMonotonic2(int[] A) {
    boolean isincrease = true;
    boolean isdecrease = true;
    int n = A.length;
    for (int i=0; i<n-1; i++) {
        isincrease = isincrease && A[i] <= A[i+1];
        isdecrease = isdecrease && A[i] >= A[i+1];
    }
    return isincrease || isdecrease;
}


04 第三种解法

针对第二种解法,咱们分两种状况分别处理了isincrease、isdecrease两个变量。

public boolean isMonotonic3(int[] A) {
    boolean isincrease = true;
    boolean isdecrease = true;
    int n = A.length;
    for (int i=0; i<n-1; i++) {
        if (A[i] < A[i+1]) {
            isdecrease = false;
        }
        if (A[i] > A[i+1]) {
            isincrease = false;
        }
    }
    return isincrease || isdecrease;
}


05 第四种解法

也能够借助包装类Integercompare方法,比较相邻两个元素的大小,另外使用一个变量存储上一次比较的结果,每次作完新的比较后,用新的结果和前一次的结果比较,只要先后两次比较结果不一样,能够直接返回false。

public boolean isMonotonic4(int[] A) {
    int flag = 0, n = A.length;
    for (int i=0; i<n-1; i++) {
        int num = Integer.compare(A[i], A[i+1]);
        if (num != 0) {
            if (flag != 0 && flag != num) {
                return false;
            }
            flag = num;
        }
    }
    return true;
}


06 小结

算法专题目前已连续日更超过六个月,算法题文章213+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是所有内容,若是你们有什么好的解法思路、建议或者其余问题,能够下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

相关文章
相关标签/搜索