860. Lemonade Change

题目地址:https://leetcode.com/problems/lemonade-change/description/

大意:大概的意思就是找钱的问题。少于10000之内的顾客数来排队买柠檬汽水,一瓶5块钱,但是顾客给的钱可能是5块,10块,或者20块,只能用顾客给的钱找钱。返回True表示这些顾客的钱数能每个都找好。False表示不能。

思路:很简单,用2个数据来表示收到的5块的钱和10块的钱,因为不可能用20去找钱,就不用管了。如果顾客给的10块的话,就得给他一个5块的,同时10块的个数+1,如果是20,就有2种情况,要么是给一个5块一个10块的,或者3个5块的,当然,前一种比较好,因为5块钱更灵活,还是留着最好。

class Solution:
    def lemonadeChange(self, bills):
        """
        :type bills: List[int]
        :rtype: bool
        """
        wallet = {5:0,10:0}
        for bill in bills:
            # 5
            if bill == 5:
                wallet[5] += 1
            elif bill == 10:
                if wallet[5] > 0:
                    wallet[10] += 1
                    wallet[5] -= 1
                else:
                    return False
            elif bill == 20:
                if wallet[10] > 0 and wallet[5] > 0:
                    wallet[10] -= 1
                    wallet[5] -=1
                elif wallet[5] >= 3:
                    wallet[5] -= 3
                else:
                    return False
        return True




所有题目解题方法和答案代码地址:https://github.com/fredfeng0326/LeetCode
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容