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