File tree Expand file tree Collapse file tree 1 file changed +79
-0
lines changed Expand file tree Collapse file tree 1 file changed +79
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ bool lemonadeChange (vector<int >& bills)
4
+ {
5
+ unordered_map<int , int > billsCollectedCount;
6
+
7
+ const int lemonadePrice = 5 ;
8
+
9
+ for (const auto & billGiven : bills)
10
+ {
11
+ // calc change
12
+ int changeNeeded = billGiven - lemonadePrice;
13
+
14
+ switch (changeNeeded)
15
+ {
16
+ case 15 :
17
+ {
18
+ // check if a $5 and $10 bill is available
19
+ if (billsCollectedCount[10 ] >= 1 &&
20
+ billsCollectedCount[5 ] >= 1 )
21
+ {
22
+ billsCollectedCount[10 ]--;
23
+ billsCollectedCount[5 ]--;
24
+ changeNeeded -= 15 ;
25
+ }
26
+ // check if a 3 $5 bills are available
27
+ else if (billsCollectedCount[5 ] >= 3 )
28
+ {
29
+ billsCollectedCount[5 ] -= 3 ;
30
+ changeNeeded -= 5 *3 ;
31
+ }
32
+
33
+ break ;
34
+ }
35
+
36
+ case 10 :
37
+ {
38
+ // check if a $10 bill is available
39
+ if (billsCollectedCount[10 ] >= 1 )
40
+ {
41
+ billsCollectedCount[10 ]--;
42
+ changeNeeded -= 10 ;
43
+ }
44
+ // check if 2 $5 bills are available
45
+ else if (billsCollectedCount[5 ] >= 2 )
46
+ {
47
+ billsCollectedCount[5 ] -= 2 ;
48
+ changeNeeded -= 5 *2 ;
49
+ }
50
+
51
+ break ;
52
+ }
53
+
54
+ case 5 :
55
+ {
56
+ if (billsCollectedCount[5 ] >= 1 )
57
+ {
58
+ billsCollectedCount[5 ]--;
59
+ changeNeeded -= 5 ;
60
+ }
61
+ break ;
62
+ }
63
+
64
+ }
65
+
66
+ // Check if change was found
67
+ if (changeNeeded > 0 )
68
+ {
69
+ return false ;
70
+ }
71
+
72
+ // collect bill
73
+ billsCollectedCount[billGiven]++;
74
+ }
75
+
76
+ // if we readched here then the correct amount of bills needed for all of the customers change was found
77
+ return true ;
78
+ }
79
+ };
You can’t perform that action at this time.
0 commit comments