Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra xem thay đổi có thể được cung cấp trong JavaScript hay không

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