檢查 JavaScript 中是否可以提供找零


問題

我們需要編寫一個 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

更新於: 2021年4月23日

66 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.