Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số, arr, làm đối số đầu tiên và duy nhất.
Chúng ta hãy xem xét tình huống sau:
Một chủ cửa hàng bán một loại hàng hóa có giá chính xác là ₹ 5. Một số khách hàng đang xếp hàng và mỗi người sẽ mua đúng một đơn vị hàng hóa này. Khách hàng có thể cung cấp cho chủ cửa hàng một tờ tiền ₹ 5, ₹ 10 hoặc ₹ 20. Xem xét rằng chủ cửa hàng không có tiền ngay từ đầu và mảng đại diện cho các ghi chú được đưa ra bởi khách hàng đang xếp hàng.
Chức năng của chúng tôi phải xác định xem chủ cửa hàng có thể cung cấp cho tất cả khách hàng những thay đổi chính xác hay không.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
const arr = [5, 5, 10, 10, 20];
Đầu ra
const output = false;
Giải thích đầu ra
Bởi vì hai ghi chú 5 sẽ được sử dụng để cung cấp các thay đổi cho hai ghi chú 10 và sau đó, các thay đổi cho ghi chú 20 sẽ không được tạo ra.
Sau đây là mã:
Ví dụ
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));
Đầu ra
false