Viết hàm nhận 2 mảng, kiểm tra nếu gộp và sắp xếp lại có tạo thành dãy số liên tiếp hay không.
Ví dụ
Mảng 1: [4, 6, 2, 9, 3]
Mảng 2: [1, 5, 8, 7]
Gộp: [1,2,3,4,5,6,7,8,9] → liên tiếp → true
Giải pháp
Mã triển khai:
const arr1 = [4, 6, 2, 9, 3];
const arr2 = [1, 5, 8, 7];
const canFormSequence = (arr1, arr2) => {
const combined = [...arr1, ...arr2].sort((a, b) => a - b);
if (combined.length < 2) return true;
// Kiểm tra công sai = 1
for (let i = 1; i < combined.length; i++) {
if (combined[i] - combined[i-1] !== 1) return false;
}
return true;
};
console.log(canFormSequence(arr1, arr2));
Kết quả
Đầu ra trong console:
true
Sửa lỗi code gốc: Code gốc kiểm tra commonDifference giữa 2 phần tử đầu, nhưng nên kiểm tra công sai = 1 cho dãy liên tiếp.