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;
}