class Solution {
public:
bool validMountainArray(vector<int>& arr) {
}
};
941. 有效的山脉数组
给定一个整数数组 arr
,如果它是有效的山脉数组就返回 true
,否则返回 false
。
让我们回顾一下,如果 arr
满足下述条件,那么它是一个山脉数组:
arr.length >= 3
0 < i < arr.length - 1
条件下,存在 i
使得:
arr[0] < arr[1] < ... arr[i-1] < arr[i]
arr[i] > arr[i+1] > ... > arr[arr.length - 1]
示例 1:
输入:arr = [2,1] 输出:false
示例 2:
输入:arr = [3,5,5] 输出:false
示例 3:
输入:arr = [0,3,2,1] 输出:true
提示:
1 <= arr.length <= 104
0 <= arr[i] <= 104
原站题解
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