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