ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
ให้เราพิจารณาสถานการณ์ต่อไปนี้:
เจ้าของร้านขายสินค้าชิ้นเดียวในราคา ₹5 พอดี ลูกค้าบางคนยืนต่อคิวและจะซื้อหนึ่งหน่วยของสินค้าโภคภัณฑ์แต่ละชิ้น ลูกค้าสามารถแจ้งเจ้าของร้านด้วยเงิน ₹5, ₹10 หรือ ₹20 แก่เจ้าของร้านได้ เมื่อพิจารณาว่าเจ้าของร้านไม่มีเงินในตอนเริ่มต้นและอาร์เรย์แสดงถึงบันทึกที่ลูกค้ายืนอยู่ในคิว
หน้าที่ของเราควรกำหนดว่าเจ้าของร้านสามารถให้การเปลี่ยนแปลงที่แน่นอนแก่ลูกค้าทั้งหมดได้หรือไม่
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
const arr = [5, 5, 10, 10, 20];
ผลผลิต
const output = false;
คำอธิบายผลลัพธ์
เนื่องจากจะใช้โน้ต 5 สองตัวในการเปลี่ยนแปลงสำหรับโน้ต 10 สองตัว และหลังจากนั้นจะไม่สามารถสร้างการเปลี่ยนแปลงสำหรับโน้ต 20 ตัวได้
ต่อไปนี้เป็นรหัส:
ตัวอย่าง
const arr = [5, 5, 10, 10, 20]; const provideChanges = (arr = []) => { let fives = 0 let tens = 0 for(let i = 0; i < arr.length; i++) { switch(arr[i]) { case 5: fives += 1 break case 10: if(fives <= 0) { return false } fives -= 1 tens += 1 break default: if(tens >= 1 && fives >= 1) { tens -= 1 fives -= 1 } else if(fives >= 3) { fives -= 3 } else { return false } break } } return true }; console.log(provideChanges(arr));
ผลลัพธ์
false