def lemonade_change(bills):
five=ten=0
for b in bills:
if b==5: five+=1
elif b==10: ten+=1; five-=1
else:
if ten>0: ten-=1; five-=1
else: five-=3
if five<0: return False
return True
public boolean lemonadeChange(int[] bills){
int five=0,ten=0;
for(int b:bills){
if(b==5) five++;
else if(b==10){ten++;five--;}
else{if(ten>0){ten--;five--;}else five-=3;}
if(five<0) return false;
} return true;
}
Greedy. Prefer $10 for $25 change. five=ten=0 chain assign.
def lemonade_change(bills):
five=ten=0
for b in bills:
if b==5: five+=1
elif b==10: ten+=1; five-=1
else:
if ten>0: ten-=1; five-=1
else: five-=3
if five<0: return False
return True
public boolean lemonadeChange(int[] bills){
int five=0,ten=0;
for(int b:bills){
if(b==5) five++;
else if(b==10){ten++;five--;}
else{if(ten>0){ten--;five--;}else five-=3;}
if(five<0) return false;
} return true;
}
1. Track bills 2. Give change greedily 3. Prefer $10 for $25