D99 860. Lemonade Change
题目链接
题目分析
这道题目是典型的收银问题了。
假设你在开店第一天没有零钱,你的商品卖5元。纸币有5元、10元、20元三种。给定一个数组代表你今天遇到的客人在买东西时给的钱。判断你的钱箱能不能顺利给每一位客人找零。(假设每一位客人都只买一件商品)
思路
首先判断客户给的是哪种。
如果是5元的话,直接放入钱箱,不需要判断钱箱内的钱。
如果是10元,则需判断钱箱内是否有多于1张5元。没有则直接中断交易,返回false。否则,把10元放入钱箱,并拿走一张5元。
如果是20元,则优先判断是否有多于1张5元和1张10元。若没有,判断有没有多于3张5元。符合的话和前面做同样的操作,把客户的钱放入钱箱,并找零。
最终代码
<?php
class Solution {
/**
* @param Integer[] $bills
* @return Boolean
*/
function lemonadeChange($bills) {
$inHand = [0,0,0];
foreach($bills as $bill){
switch($bill){
case 5:
$inHand[0] += 1;
break;
case 10:
$inHand[1] += 1;
if($inHand[0]>=1){
$inHand[0] -= 1;
}
else{
return false;
}
break;
case 20:
$inHand[2] +=1;
//10 + 5
if($inHand[0]>=1 && $inHand[1]>=1){
$inHand[0] -= 1;
$inHand[1] -= 1;
}
// 5 * 3
else if($inHand[0]>=3){
$inHand[0] -= 3;
}
else{
return false;
}
break;
}
}
return true;
}
}
若觉得本文章对你有用,欢迎用爱发电资助。
网友评论