跳到主要内容

978.最长湍流子数组

链接:978.最长湍流子数组
难度:Medium
标签:数组、动态规划、滑动窗口
简介:返回 A 的最大湍流子数组的长度。

题解 1 - typescript

  • 编辑时间:2021-02-08
  • 执行用时:104ms
  • 内存消耗:43.8MB
  • 编程语言:typescript
  • 解法介绍:利用双指针进行最大区间的判断。
function maxTurbulenceSize(arr: number[]): number {
let len = arr.length;
while (len > 1 && arr[0] === arr[1]) {
arr.shift();
len--;
}
if (len === 1) return 1;
let max = 2;
let l = 0;
let r = 1;
let f = arr[0] < arr[1];
while (r < len - 1) {
if (f ? arr[r] > arr[r + 1] : arr[r] < arr[r + 1]) {
f = !f;
} else {
max = Math.max(max, r - l + 1);
l = arr[r] === arr[r + 1] ? r + 1 : r;
}
r++;
}
return Math.max(max, r - l + 1);
}