跳到主要内容

941.有效的山脉数组

链接:941.有效的山脉数组
难度:Easy
标签:数组
简介:给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。

题解 1 - javascript

  • 编辑时间:2020-11-03
  • 执行用时:116ms
  • 内存消耗:40.3MB
  • 编程语言:javascript
  • 解法介绍:获取山顶然后向两侧遍历。
/**
* @param {number[]} A
* @return {boolean}
*/
var validMountainArray = function (A) {
const l = A.length;
if (l < 3) return false;
let top;
for (let i = 1; i < l - 1; i++) {
if (A[i] > A[i - 1] && A[i] > A[i + 1]) {
if (top !== undefined) return false;
top = i;
}
}
if (top === undefined) return false;
for (let i = top; i >= 0; i--) {
if (A[i] <= A[i - 1]) return false;
}
for (let i = top; i < l; i++) {
if (A[i] <= A[i + 1]) return false;
}
return true;
};

题解 2 - typescript

  • 编辑时间:2021-12-12
  • 执行用时:76ms
  • 内存消耗:40.9MB
  • 编程语言:typescript
  • 解法介绍:双指针从两头开始遍历。
function validMountainArray(arr: number[]): boolean {
const n = arr.length;
let l = 0;
let r = n - 1;
while (l < r && arr[l] < arr[l + 1]) l++;
while (l < r && arr[r] < arr[r - 1]) r--;
return l === r && l !== 0 && l !== n - 1;
}