leetcode 941 有效的山脉数组

public static boolean validMountainArray(int[] A) {
    if (A == null || A.length <= 2) {
        return false;
    }

    // idx表示分水岭
    int idx = 0;
    // 单调递增
    while (idx + 1 < A.length) {
        if (A[idx] >= A[1 + idx]) break;
        idx++;
    }

    // 如果已经到最后一个位置了,说明全是递增的,不属于有效山脉数组
    // 另一种则是第2个元素小于第一个元素,肯定不是有效山脉数组
    if (idx == 0 || idx + 1 >= A.length){
        return false;
    }

    // 判断另一侧是不是单调递减的
    while (idx + 1 < A.length) {
        if (A[idx] <= A[1 + idx]) return false;
        idx++;
    }

    return true;
}
// 测试用例
public static void main(String[] args) {
    int[] A = new int[]{2, 1};
    boolean ans = validMountainArray(A);
    System.out.println("ValidMountainArray demo01 result: " + ans);

    A = new int[]{3, 5, 5};
    ans = validMountainArray(A);
    System.out.println("ValidMountainArray demo02 result: " + ans);

    A = new int[]{0, 3, 2, 1};
    ans = validMountainArray(A);
    System.out.println("ValidMountainArray demo03 result: " + ans);

    A = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    ans = validMountainArray(A);
    System.out.println("ValidMountainArray demo04 result: " + ans);

    A = new int[]{9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
    ans = validMountainArray(A);
    System.out.println("ValidMountainArray demo04 result: " + ans);

}
posted @ 2020-11-03 09:47  枫叶艾辰  阅读(71)  评论(0编辑  收藏  举报