diff --git a/solution/0900-0999/0983.Minimum Cost For Tickets/README.md b/solution/0900-0999/0983.Minimum Cost For Tickets/README.md index 22da3a58bb342..890a8613ba6c6 100644 --- a/solution/0900-0999/0983.Minimum Cost For Tickets/README.md +++ b/solution/0900-0999/0983.Minimum Cost For Tickets/README.md @@ -79,6 +79,23 @@ ``` +### **TypeScript** + +```ts +function mincostTickets(days: number[], costs: number[]): number { + const n = days.length, m = days[n - 1] + 1; + const [a, b, c] = costs; + let dp = new Array(m).fill(0); + for (let i = 1; i < m; i++) { + let x = days.includes(i) ? (dp[i - 1] + a) : dp[i - 1]; + let y = (i > 7 ? dp[i - 7] : dp[0]) + b; + let z = (i > 30 ? dp[i - 30] : dp[0]) + c; + dp[i] = Math.min(x, y, z); + } + return dp[m - 1]; +}; +``` + ### **...** ``` diff --git a/solution/0900-0999/0983.Minimum Cost For Tickets/README_EN.md b/solution/0900-0999/0983.Minimum Cost For Tickets/README_EN.md index 2d944953d8507..4fefc95c4c461 100644 --- a/solution/0900-0999/0983.Minimum Cost For Tickets/README_EN.md +++ b/solution/0900-0999/0983.Minimum Cost For Tickets/README_EN.md @@ -94,6 +94,23 @@ In total you spent $17 and covered all the days of your travel. ``` +### **TypeScript** + +```ts +function mincostTickets(days: number[], costs: number[]): number { + const n = days.length, m = days[n - 1] + 1; + const [a, b, c] = costs; + let dp = new Array(m).fill(0); + for (let i = 1; i < m; i++) { + let x = days.includes(i) ? (dp[i - 1] + a) : dp[i - 1]; + let y = (i > 7 ? dp[i - 7] : dp[0]) + b; + let z = (i > 30 ? dp[i - 30] : dp[0]) + c; + dp[i] = Math.min(x, y, z); + } + return dp[m - 1]; +}; +``` + ### **...** ``` diff --git a/solution/0900-0999/0983.Minimum Cost For Tickets/Solution.ts b/solution/0900-0999/0983.Minimum Cost For Tickets/Solution.ts new file mode 100644 index 0000000000000..b0f0c5bb6a90c --- /dev/null +++ b/solution/0900-0999/0983.Minimum Cost For Tickets/Solution.ts @@ -0,0 +1,12 @@ +function mincostTickets(days: number[], costs: number[]): number { + const n = days.length, m = days[n - 1] + 1; + const [a, b, c] = costs; + let dp = new Array(m).fill(0); + for (let i = 1; i < m; i++) { + let x = days.includes(i) ? (dp[i - 1] + a) : dp[i - 1]; + let y = (i > 7 ? dp[i - 7] : dp[0]) + b; + let z = (i > 30 ? dp[i - 30] : dp[0]) + c; + dp[i] = Math.min(x, y, z); + } + return dp[m - 1]; +}; \ No newline at end of file