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;
}