code.ashish.me

Atom feed

Recently added: 128 Longest Consecutive Sequence, 347 Top K Frequent Elements, 045 Jump Game 2, 228 Summary Ranges, 219 Contains Duplicate 2

983 Minimum Cost For Tickets

/**
 *
 * Ashish Patel
 * e: ashishsushilPatel@gmail.com
 * w: https://ashish.me
 *
 */

const minimumCostForTickets = (days, costs) => {
  const dp = {}
  const day = [1, 7, 30]
  const dfs = index => {
    if (index >= days.length) {
      return 0
    }
    if (dp[index]) {
      return dp[index]
    }
    dp[index] = Number.MAX_VALUE
    let j = index
    for (let i = 0; i < 3; i++) {
      const d = day[i]
      const c = costs[i]
      while (j < days.length && days[j] <= days[index] + d) {
        j += 1
      }
      dp[index] = Math.min(dp[index], c + dfs(j))
    }
    return dp[index]
  }
  return dfs(0)
}

console.log(minimumCostForTickets([1, 4, 6, 7, 8, 20], [2, 7, 15]))

Created 2022-03-24T14:41:24+00:00 · Edit