算法提高之LeetCode刷题LeetCode Python算法

860. Lemonade Change

2018-08-20  本文已影响1人  fred_33c7

题目地址: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
上一篇下一篇

猜你喜欢

热点阅读