码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 860. Lemonade Change

时间:2020-06-09 09:22:23      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:pre   inpu   OLE   Plan   code   ack   bool   receive   组合   

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
Explanation: 
From the first 3 customers, we collect three $5 bills in order.
From the fourth customer, we collect a $10 bill and give back a $5.
From the fifth customer, we give a $10 bill and a $5 bill.
Since all customers got correct change, we 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
Explanation: 
From the first two customers in order, we collect two $5 bills.
For the next two customers in order, we collect a $10 bill and give back a $5 bill.
For the last customer, we can‘t give change of $15 back because we only have two $10 bills.
Since not every customer received correct change, the answer is false.

Note:

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

柠檬水找零。题意是你在卖柠檬水,5美金一杯。顾客只会以5,10和20美金面值的钞票来跟你买。给你一堆客人的钞票面值,请问你是否有合适的,足够的钱找零。

思路是贪心。这里贪的是如果要找15美金,就一定要先尝试用10 + 5的组合而不是3个5的组合找钱。

时间O(n)

空间O(1)

Java实现

 1 class Solution {
 2     public boolean lemonadeChange(int[] bills) {
 3         int five = 0;
 4         int ten = 0;
 5         for (int bill : bills) {
 6             if (bill == 5) {
 7                 five++;
 8             } else if (bill == 10) {
 9                 if (five == 0) {
10                     return false;
11                 }
12                 five--;
13                 ten++;
14             } else {
15                 if (five > 0 && ten > 0) {
16                     five--;
17                     ten--;
18                 } else if (five >= 3) {
19                     five -= 3;
20                 } else {
21                     return false;
22                 }
23             }
24         }
25         return true;
26     }
27 }

 

LeetCode 题目总结

[LeetCode] 860. Lemonade Change

标签:pre   inpu   OLE   Plan   code   ack   bool   receive   组合   

原文地址:https://www.cnblogs.com/cnoodle/p/13070225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!