LeetCode – Lemonade Change
At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and order one at a time (in the order specified by bills). Each customer will only buy one lemonade and pay with either a $5, $10, or $20 bill. You must provide the correct change to each customer, so that the net transaction is that the customer pays $5. Note that you don't have any change in hand at first. Return true if and only if you can provide every customer with correct change. Example 1: Input: [5,5,5,10,20] Output: true Explanation: From the first 3 customers, we collect three $5 bills in order. From the fourth customer, we collect a $10 bill and give back a $5. From the fifth customer, we give a $10 bill and a $5 bill. Since all customers got correct change, we output true. Example 2: Input: [5,5,10] Output: true Example 3: Input: [10,10] Output: false Example 4: Input: [5,5,10,10,20] Output: false Explanation: From the first two customers in order, we collect two $5 bills. For the next two customers in order, we collect a $10 bill and give back a $5 bill. For the last customer, we can't give change of $15 back because we only have two $10 bills. Since not every customer received correct change, the answer is false. Note: 0 <= bills.length <= 10000 bills[i] will be either 5, 10, or 20.
这是一个关于找零的问题。首先,因为初始没有资本,而且每份柠檬水的售价是5美元。因此,5美元是最“珍贵”的找零资源。
如果顾客给的是10美元,那么只能找给他一张5美元的。
如果顾客给的是20美元,因为5美元比较稀缺,因此如果有10美元的钞票,则优先找给他10美元,然后再找一张5美元;否则的话,就直接给三张5美元的钞票。
如果5美元的数量变为“负”,说明找零失败,返回False;否则就返回True。
class Solution { public boolean lemonadeChange(int[] bills) { Map<Integer, Integer> map = new HashMap<>(); map.put(5,0); map.put(10,0); for(int bill : bills){ if(bill == 5){ map.put(5, map.get(5)+1); } else if(bill == 10){ if(map.get(5) == 0){ return false; } map.put(5,map.get(5)-1); map.put(10,map.get(10)+1); } else if(bill == 20){ if(map.get(5) == 0){ return false; } if(map.get(10) == 0 && map.get(5) < 3){ return false; } if(map.get(10) > 0 && map.get(5) == 0){ return false; } if(map.get(10) > 0){ map.put(10, map.get(10)-1); map.put(5, map.get(5)-1); } else{ map.put(5,map.get(5)-3); } } } return true; } }
posted on 2018-09-19 19:15 IncredibleThings 阅读(126) 评论(0) 编辑 收藏 举报