这道题目是典型的收银问题了。数组
假设你在开店第一天没有零钱,你的商品卖5元。纸币有5元、10元、20元三种。给定一个数组表明你今天遇到的客人在买东西时给的钱。判断你的钱箱能不能顺利给每一位客人找零。(假设每一位客人都只买一件商品).net
首先判断客户给的是哪一种。code
若是是5元的话,直接放入钱箱,不须要判断钱箱内的钱。
若是是10元,则需判断钱箱内是否有多于1张5元。没有则直接中断交易,返回false。不然,把10元放入钱箱,并拿走一张5元。
若是是20元,则优先判断是否有多于1张5元和1张10元。若没有,判断有没有多于3张5元。符合的话和前面作一样的操做,把客户的钱放入钱箱,并找零。leetcode
<?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; } }
若以为本文章对你有用,欢迎用[爱发电](https://afdian.net/@skys215)资助。