這道題目是典型的收銀問題了。數組
假設你在開店第一天沒有零錢,你的商品賣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; } }
若以爲本文章對你有用,歡迎用愛發電資助。get