Skip to content

Commit 1bc3259

Browse files
authored
Create solution.cpp
1 parent f0f51e7 commit 1bc3259

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

LemonadeChange/solution.cpp

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
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+
};

0 commit comments

Comments
 (0)