Lemonade Change

LeetCode Q 860 - Lemonade Change

At a lemonade stand, each lemonade costs $5.
Customers are standing in a queue to buy from you, and order one at a time (in the order specified by bills).
Each customer will only buy one lemonade and pay with either a $5, $10, or $20 bill. You must provide the correct change to each customer, so that the net transaction is that the customer pays $5.
Note that you don’t have any change in hand at first.

Return true if and only if you can provide every customer with correct change.

Example 1: Input: [5,5,5,10,20] ; Output: true
Example 2: Input: [5,5,10] ; Output: true
Example 3: Input: [10,10] ; Output: false
Example 4: Input: [5,5,10,10,20] ; Output: false

Note:

  • 0 <= bills.length <= 10000
  • bills[i] will be either 5, 10, or 20.

Solution

Code:

public boolean lemonadeChange(int[] bills) {
	int five = 0, ten = 0;

	for (int bill: bills) {
		if (bill == 5) {
			five++;
		} else if (bill == 10) {
			five--; ten++;
		} else if (ten > 0) {
			ten--; five--;
		} else {
			five -= 3;
		}

		if (five < 0) return false;
	}

	return true;
}

   Reprint policy


《Lemonade Change》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
  TOC