09 Sept 2026Go / Python / TypeScriptEasy

Lemonade Change

Determine whether exact change can be returned to every lemonade customer in sequence.

Track five- and ten-dollar bills, preferring a ten plus a five when making fifteen dollars of change because fives are more flexible.

complexity

O(n) time and O(1) space.

solution files

  • Go lemonade-change/solution.go
  • Python lemonade-change/solution.py
  • TypeScript lemonade-change/solution.ts

Solution files

Golemonade-change/solution.go
package main

func lemonadeChange(bills []int) bool {
	fives, tens := 0, 0
	for _, bill := range bills {
		switch {
		case bill == 5:
			fives++
		case bill == 10 && fives > 0:
			fives--
			tens++
		case bill == 20 && tens > 0 && fives > 0:
			tens--
			fives--
		case bill == 20 && fives >= 3:
			fives -= 3
		default:
			return false
		}
	}
	return true
}
Pythonlemonade-change/solution.py
class Solution:
    def lemonadeChange(self, bills: list[int]) -> bool:
        fives = tens = class="syntax-number">0
        for bill in bills:
            if bill == class="syntax-number">5: fives += class="syntax-number">1
            elif bill == class="syntax-number">10:
                if not fives: return False
                fives, tens = fives - class="syntax-number">1, tens + class="syntax-number">1
            elif tens and fives: tens, fives = tens - class="syntax-number">1, fives - class="syntax-number">1
            elif fives >= class="syntax-number">3: fives -= class="syntax-number">3
            else: return False
        return True
TypeScriptlemonade-change/solution.ts
function lemonadeChange(bills: number[]): boolean {
  let fives = class="syntax-number">0;
  let tens = class="syntax-number">0;
  for (const bill of bills) {
    if (bill === class="syntax-number">5) fives += class="syntax-number">1;
    else if (bill === class="syntax-number">10) { if (fives === class="syntax-number">0) return false; fives -= class="syntax-number">1; tens += class="syntax-number">1; }
    else if (tens > class="syntax-number">0 && fives > class="syntax-number">0) { tens -= class="syntax-number">1; fives -= class="syntax-number">1; }
    else if (fives >= class="syntax-number">3) fives -= class="syntax-number">3;
    else return false;
  }
  return true;
}