跳到主要内容

845.数组中的最长山脉

链接:845.数组中的最长山脉
难度:Medium
标签:数组、双指针、动态规划、枚举
简介:给出一个整数数组 A,返回最长 “山脉” 的长度。

题解 1 - typescript

  • 编辑时间:2020-10-25
  • 执行用时:104ms
  • 内存消耗:42.6MB
  • 编程语言:typescript
  • 解法介绍:遍历获取所有山顶,再计算每个山脉的高度。
function longestMountain(A: number[]): number {
const len = A.length;
const tops: number[] = [];
findTop();
let ans = 0;
console.log(tops);
if (tops.length === 0) return ans; // 没有顶峰
for (const top of tops) {
ans = Math.max(ans, findLength(top));
}
return ans;
function findLength(top: number): number {
let ans = 1;
for (let i = top - 1; i >= 0; i--) {
if (A[i] >= A[i + 1]) break;
ans++;
}
for (let i = top + 1; i < len; i++) {
if (A[i] >= A[i - 1]) break;
ans++;
}
return ans;
}
function findTop() {
for (let i = 1; i < len - 1; i++) {
const num = A[i];
if (num > A[i + 1] && num > A[i - 1]) tops.push(i);
}
}
}