Leetcode PHP題解--D99 860. Lemonade Change
阿新 • • 發佈:2019-07-08
題目分析
這道題目是典型的收銀問題了。
假設你在開店第一天沒有零錢,你的商品賣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; } }