Vấn đề
Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng các số nguyên được sắp xếp, arr, làm đối số đầu tiên và duy nhất.
Hàm của chúng ta sẽ trả về true nếu và chỉ khi chúng ta có thể chia mảng thành 1 hoặc nhiều dãy con sao cho mỗi dãy con bao gồm các số nguyên liên tiếp và có độ dài ít nhất là 3, ngược lại là false.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
const arr = [1, 2, 3, 3, 4, 5];
Đầu ra
const output = true;
Giải thích đầu ra
Chúng ta có thể chia chúng thành hai chuỗi con liên tiếp -
1, 2, 3 3, 4, 5
Ví dụ
Sau đây là mã -
const arr = [1, 2, 3, 3, 4, 5]; const canSplit = (arr = []) => { const count = arr.reduce((acc, num) => { acc[num] = (acc[num] || 0) + 1 return acc }, {}) const needed = {} for (const num of arr) { if (count[num] <= 0) { continue } count[num] -= 1 if (needed[num] > 0) { needed[num] -= 1 needed[num + 1] = (needed[num + 1] || 0) + 1 } else if (count[num + 1] > 0 && count[num + 2]) { count[num + 1] -= 1 count[num + 2] -= 1 needed[num + 3] = (needed[num + 3] || 0) + 1 } else { return false } } return true } console.log(canSplit(arr));
Đầu ra
true