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