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

Kiểm tra mảng có thể sắp thành dãy liên tiếp - JavaScript

Viết hàm kiểm tra các phần tử mảng có thể sắp xếp lại thành dãy số liên tiếp (cách nhau 1 đơn vị) hay không.

Ví dụ

Mảng: [3, 1, 4, 2, 5] → có thể sắp thành [1,2,3,4,5] → true

Giải pháp

Mã triển khai:

const arr = [3, 1, 4, 2, 5];
const canBeConsecutive = (arr = []) => {
  if (!arr.length) return false;
  const copy = arr.slice().sort((a, b) => a - b);
  for (let i = copy[0], j = 0; j < copy.length; i++, j++) {
    if (copy[j] !== i) return false;
  }
  return true;
};

console.log(canBeConsecutive(arr));

Kết quả

Đầu ra trong console:

true

Cách khác: Kiểm tra max - min + 1 === length và tất cả phần tử duy nhất (dùng Set).