ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์แรกและตัวเลข num เป็นอาร์กิวเมนต์ที่สอง
ตัวเลขในอาร์เรย์อยู่ในช่วง [1, 13] รวมขีดจำกัด ซึ่งแสดงถึงดัชนีการเล่นไพ่แบบอิง 1
หน้าที่ของเราควรกำหนดว่ามีวิธีจัดเรียงไพ่ใหม่เป็นกลุ่มหรือไม่ เพื่อให้แต่ละกลุ่มมีขนาด num และประกอบด้วยไพ่ num เรียงต่อกัน
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
const arr = [1, 4, 3, 2]; const num = 2;
ผลผลิต
const output = 2;
คำอธิบายผลลัพธ์
เนื่องจากการ์ดสามารถจัดเรียงใหม่ได้เป็น [1, 2], [3, 4]
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
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));
ผลลัพธ์
true