列表

详情


941. 有效的山脉数组

给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false

让我们回顾一下,如果 arr 满足下述条件,那么它是一个山脉数组:

 

 

示例 1:

输入:arr = [2,1]
输出:false

示例 2:

输入:arr = [3,5,5]
输出:false

示例 3:

输入:arr = [0,3,2,1]
输出:true

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool validMountainArray(vector<int>& arr) { } };

python3 解法, 执行用时: 52 ms, 内存消耗: 17 MB, 提交时间: 2023-09-27 16:29:54

class Solution:
    def validMountainArray(self, arr: List[int]) -> bool:
        N = len(arr)
        i = 0

        # 递增扫描
        while i + 1 < N and arr[i] < arr[i + 1]:
            i += 1

        # 最高点不能是数组的第一个位置或最后一个位置
        if i == 0 or i == N - 1:
            return False

        # 递减扫描
        while i + 1 < N and arr[i] > arr[i + 1]:
            i += 1

        return i == N - 1

javascript 解法, 执行用时: 64 ms, 内存消耗: 43.7 MB, 提交时间: 2023-09-27 16:29:26

/**
 * @param {number[]} arr
 * @return {boolean}
 */
var validMountainArray = function(arr) {
    const N = arr.length;
    let i = 0;

    // 递增扫描
    while (i + 1 < N && arr[i] < arr[i + 1]) {
        i++;
    }

    // 最高点不能是数组的第一个位置或最后一个位置
    if (i === 0 || i === N - 1) {
        return false;
    }

    // 递减扫描
    while (i + 1 < N && arr[i] > arr[i + 1]) {
        i++;
    }

    return i === N - 1;
};

java 解法, 执行用时: 1 ms, 内存消耗: 43.6 MB, 提交时间: 2023-09-27 16:28:54

class Solution {
    public boolean validMountainArray(int[] arr) {
        int i = 0, n = arr.length;
        while ( i+1 < n && arr[i] < arr[i+1] ) {
            i++;
        }
        if ( i == 0 || i == n-1 ) {
            return false;
        }
        while ( i+1 < n && arr[i] > arr[i+1] ) {
            i++;
        }
        return i == n - 1;
    }
}

golang 解法, 执行用时: 32 ms, 内存消耗: 6.4 MB, 提交时间: 2020-11-03 22:57:06

func validMountainArray(A []int) bool {
    i := 0
    for i+1 < len(A) && A[i] < A[i+1] {
        i++
    }
    if i == 0 || i == len(A)-1 {
        return false
    }
    for i+1 < len(A) && A[i] > A[i+1] {
        i++
    }
    return i == len(A)-1
}

python3 解法, 执行用时: 288 ms, 内存消耗: 14.9 MB, 提交时间: 2020-11-03 22:49:25

class Solution:
    def validMountainArray(self, A: List[int]) -> bool:
        l = len(A)
        if l < 3:
            return False
        m = A.index(max(A))
        if m == 0 or m == l - 1:
            return False
        for i in range(0, m):
            if A[i] >= A[i+1]:
                return False
        for i in range(m, l-1):
            if A[i] <= A[i+1]:
                return False
        return True

上一题