检查 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.