美文网首页Leetcode题解-PHP版
Leetcode PHP题解--D99 860. Lemonad

Leetcode PHP题解--D99 860. Lemonad

作者: skys215 | 来源:发表于2019-07-07 23:50 被阅读0次

    D99 860. Lemonade Change

    题目链接

    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;
        }
    }
    

    若觉得本文章对你有用,欢迎用爱发电资助。

    相关文章

      网友评论

        本文标题:Leetcode PHP题解--D99 860. Lemonad

        本文链接:https://www.haomeiwen.com/subject/zeewhctx.html