go: add «983. Minimum Cost For Tickets»

URL:	https://leetcode.com/problems/minimum-cost-for-tickets/
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-12-31 11:36:51 +01:00
parent 5cc859c6b4
commit 4e0f9fbca5
Signed by: mfocko
SSH key fingerprint: SHA256:icm0fIOSJUpy5+1x23sfr+hLtF9UhY8VpMC7H4WFJP8

View file

@ -0,0 +1,25 @@
package main
func mincostTickets(days []int, costs []int) int {
daily, weekly, monthly := costs[0], costs[1], costs[2]
lastDay := days[len(days)-1]
dp := make([]int, lastDay+1)
for i, day := 0, 1; day <= lastDay; day++ {
if day < days[i] {
// skip tickets when not travelling
dp[day] = dp[day-1]
continue
}
dp[day] = min(
dp[day-1]+daily,
dp[max(0, day-7)]+weekly,
dp[max(0, day-30)]+monthly,
)
i++
}
return dp[lastDay]
}