Computer >> Máy Tính >  >> Lập trình >> Javascript

Mảng con dài nhất với sự khác biệt tuyệt đối bằng một số trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng Numbers làm đối số đầu tiên, giả sử arr và một số, giả sử num, làm đối số thứ hai. Hàm sẽ tìm và trả về độ dài của mảng con dài nhất (liền kề hoặc không liền kề) mà mỗi cặp có sự khác biệt tuyệt đối nhỏ hơn hoặc bằng num.

Ví dụ:nếu mảng đầu vào và số là -

const arr = [7, 9, 8, 6, 6, 3];
const num = 1;

Sau đó, kết quả đầu ra phải là -

const output = 3,

bởi vì mảng con mong muốn là [7, 6, 6]

Ví dụ

Mã cho điều này sẽ là -

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);
   buckets.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];
      let prev = buckets[j - 1];
      if(prev != 0 && prev + curr > max) {
         max = prev + curr;
      };
   };
   return max;
};
console.log(maximumSubarray(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

3