Skip to content

Commit 54fa072

Browse files
committed
Add solution #983
1 parent effbbb5 commit 54fa072

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 1,065 LeetCode solutions in JavaScript
1+
# 1,066 LeetCode solutions in JavaScript
22

33
[https://leetcode.com/](https://leetcode.com/)
44

@@ -791,6 +791,7 @@
791791
980|[Unique Paths III](./solutions/0980-unique-paths-iii.js)|Hard|
792792
981|[Time Based Key-Value Store](./solutions/0981-time-based-key-value-store.js)|Medium|
793793
982|[Triples with Bitwise AND Equal To Zero](./solutions/0982-triples-with-bitwise-and-equal-to-zero.js)|Hard|
794+
983|[Minimum Cost For Tickets](./solutions/0983-minimum-cost-for-tickets.js)|Medium|
794795
985|[Sum of Even Numbers After Queries](./solutions/0985-sum-of-even-numbers-after-queries.js)|Easy|
795796
989|[Add to Array-Form of Integer](./solutions/0989-add-to-array-form-of-integer.js)|Easy|
796797
994|[Rotting Oranges](./solutions/0994-rotting-oranges.js)|Medium|
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* 983. Minimum Cost For Tickets
3+
* https://leetcode.com/problems/minimum-cost-for-tickets/
4+
* Difficulty: Medium
5+
*
6+
* You have planned some train traveling one year in advance. The days of the year in which you will
7+
* travel are given as an integer array days. Each day is an integer from 1 to 365.
8+
*
9+
* Train tickets are sold in three different ways:
10+
* - a 1-day pass is sold for costs[0] dollars,
11+
* - a 7-day pass is sold for costs[1] dollars, and
12+
* - a 30-day pass is sold for costs[2] dollars.
13+
*
14+
* The passes allow that many days of consecutive travel.
15+
*
16+
* For example, if we get a 7-day pass on day 2, then we can travel for 7 days: 2, 3, 4, 5, 6, 7,
17+
* and 8.
18+
*
19+
* Return the minimum number of dollars you need to travel every day in the given list of days.
20+
*/
21+
22+
/**
23+
* @param {number[]} days
24+
* @param {number[]} costs
25+
* @return {number}
26+
*/
27+
var mincostTickets = function(days, costs) {
28+
const lastDay = days[days.length - 1];
29+
const travelDays = new Set(days);
30+
const minCost = new Array(lastDay + 1).fill(0);
31+
32+
for (let day = 1; day <= lastDay; day++) {
33+
if (!travelDays.has(day)) {
34+
minCost[day] = minCost[day - 1];
35+
continue;
36+
}
37+
38+
const oneDayCost = minCost[day - 1] + costs[0];
39+
const sevenDayCost = minCost[Math.max(0, day - 7)] + costs[1];
40+
const thirtyDayCost = minCost[Math.max(0, day - 30)] + costs[2];
41+
42+
minCost[day] = Math.min(oneDayCost, sevenDayCost, thirtyDayCost);
43+
}
44+
45+
return minCost[lastDay];
46+
};

0 commit comments

Comments
 (0)