class Solution:
def lemonadeChange(self, bills: List[int]) -> bool:
if not bills:
return True
five,ten=0,0
#收5块加1
#收10块,5块减1,10块加1
#收20,先用一个10快去找,如果没有10块,就用3个5块去找
#最后检查5块的数量和10块的数量都大于0,否则返回False
for i in range(len(bills)):
if bills[i]==5:
five+=1
elif bills[i]==10:
ten+=1
five-=1
elif bills[i]==20:
if ten==0:
five-=3
else:
ten-=1
five-=1
if five<0 or ten<0:
return False
return True
总结:一开始想复杂了还用hash计算,其实就是简单优先用大额金钱找,再用小额金钱找,统计较小金额的数量即可。