Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Subarray dài nhất với hiệu tuyệt đối ≤ k trong JavaScript

Viết hàm tìm độ dài subarray (liên tiếp hoặc không) dài nhất mà hiệu tuyệt đối giữa mọi cặp phần tử ≤ num.

Ví dụ: arr=[7,9,8,6,6,3], num=1 → 3 (subarray [7,6,6]).

Ví dụ

const arr = [7, 9, 8, 6, 6, 3];
const maximumSubarray = (arr = [], num = 1) => {
  if (!arr.length) return 0;
  const maximum = arr.reduce((acc, val) => Math.max(acc, val));
  const buckets = new Array(maximum + 1).fill(0);
  const { length } = arr;
  for (let i = 0; i < length; i++) buckets[arr[i]] += num;
  let max = 0;
  for (let j = 1; j < maximum + 1; j++) {
    let curr = buckets[j], prev = buckets[j - 1];
    if (prev != 0 && prev + curr > max) max = prev + curr;
  }
  return max;
};
console.log(maximumSubarray(arr));

Kết quả

3