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

Mảng con dài nhất với sự khác biệt về đơn vị trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, arr, làm đối số đầu tiên và duy nhất

Hàm của chúng ta sẽ tìm và trả về độ dài của một mảng con như vậy, trong đó sự khác biệt giữa giá trị lớn nhất và giá trị nhỏ nhất của nó là chính xác 1 .

Ví dụ:nếu đầu vào của hàm là -

const arr = [2, 4, 3, 3, 6, 3, 4, 8];

Sau đó, đầu ra phải là -

const output = 5;

Giải thích đầu ra

Bởi vì mảng con mong muốn là [4, 3, 3, 3, 4]

Ví dụ

Sau đây là mã -

const arr = [2, 4, 3, 3, 6, 3, 4, 8];
const longestSequence = (arr = []) => {
   const map = arr.reduce((acc, num) => {
      acc[num] = (acc[num] || 0) + 1
      return acc
   }, {})

   return Object.keys(map).reduce((max, key) => {
      const nextKey = parseInt(key, 10) + 1
   if (map[nextKey] >= 0) {
      return Math.max(
         max,
         map[key] + map[nextKey],
      )
   }
   return max
   }, 0);
};
console.log(longestSequence(arr));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

5