贪心
方法一贪心
一开始我们没有钱,顾客可能给我们三种钱
- 五块钱:我们直接收下,并且可以找零的前加上这五块钱
- 十块:如果我们有五块钱,可以收下,同时把五块钱给顾客,否则无法招领
- 二十块:二十块可以有两种找零法案。一种是找一个五块一个十块,一种是找三个五块。当两种找零方案都可行的时候更倾向于第一种,因为五块的应用场景更多。
参考代码
class Solution:def lemonadeChange(self, bills: List[int]) -> bool:five,ten = 0,0for i,bill in enumerate(bills):if bill == 5:five += 1elif bill == 10:if five:five -= 1ten += 1else:return Falseelse:if ten and five:ten -= 1five -= 1elif five >= 3:five -= 3else:return Falsereturn True
复杂度分析
时间复杂度 O(n) n为bills的长度
空间复杂度 O(1)
