Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, arr, làm đối số đầu tiên và một số, num, làm đối số thứ hai.
Các số trong mảng nằm trong phạm vi [1, 13], bao gồm các giới hạn, đại diện cho chỉ số dựa trên 1 của các thẻ chơi.
Hàm của chúng tôi sẽ xác định xem có tồn tại cách sắp xếp lại các thẻ thành các nhóm để mỗi nhóm có kích thước num và bao gồm num thẻ liên tiếp hay không.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
const arr = [1, 4, 3, 2]; const num = 2;
Đầu ra
const output = 2;
Giải thích đầu ra
Vì các thẻ có thể được sắp xếp lại thành [1, 2], [3, 4]
Ví dụ
Sau đây là mã -
const arr = [1, 4, 3, 2]; const num = 2; const canRearrange = (arr = [], num = 1) => { const find = (map, n, num) => { let j = 0 while(j < num) { if(!map[n + j]) return false else map[n + j] -= 1 j++ } return true } let map = {} arr.sort(function(a, b) {return a - b}) for(let n of arr) { map[n] = map[n] ? map[n] + 1 : 1 } for(let n of arr) { if(map[n] === 0 || find(map, n, num)) continue else return false } return true }; console.log(canRearrange(arr, num));
Đầu ra
true