Skip to content

Commit 2f66f8e

Browse files
authored
Create minimum-cost-for-tickets.cpp
1 parent 572b2f6 commit 2f66f8e

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

C++/minimum-cost-for-tickets.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Time: O(n)
2+
// space: O(n)
3+
4+
class Solution {
5+
public:
6+
int mincostTickets(vector<int>& days, vector<int>& costs) {
7+
static vector<int> durations{1, 7, 30};
8+
9+
vector<int> dp(days.size() + 1, numeric_limits<int>::max());
10+
dp[0] = 0;
11+
vector<int> last_buy_days{0, 0, 0};
12+
for (int i = 1; i < days.size() + 1; ++i) {
13+
for (int j = 0; j < durations.size(); ++j) {
14+
while (i - 1 < days.size() &&
15+
days[i-1] > days[last_buy_days[j]]+durations[j] - 1) {
16+
++last_buy_days[j]; // Time: O(n)
17+
}
18+
dp[i] = min(dp[i], dp[last_buy_days[j]]+costs[j]);
19+
}
20+
}
21+
return dp.back();
22+
}
23+
};

0 commit comments

Comments
 (0)