Leetcode PHP題解--D99 860. Lemonade Change

D99 860. Lemonade Change

題目連接

860. Lemonade Changephp

題目分析

這道題目是典型的收銀問題了。數組

假設你在開店第一天沒有零錢,你的商品賣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

相關文章
相關標籤/搜索