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

Mảng con dài nhất có chênh lệch đơn vị trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr làm đối số duy nhất. Hàm phải tìm và trả về độ dài của một mảng con mà chênh lệch giữa giá trị lớn nhất và nhỏ nhất của nó bằng chính xác 1.

Ví dụ, nếu đầu vào là:

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

Thì đầu ra sẽ là:

const output = 5;

Giải thích kết quả

Vì mảng con mong muốn là [4, 3, 3, 3, 4].

Ví dụ

Dưới đây là mã thực hiện:

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

Kết quả

Đầu ra trên console:

5