LC871. 最低加油次数


LC871-最低加油次数

以次数作为子问题,01动态规划,如果次数的距离可以到达站点i证明是子问题,取出最大距离


func minRefuelStops(target int, startFuel int, stations [][]int) int {
    dp := make([]int, len(stations)+1)
    dp[0] = startFuel

    for i, ss := range stations {
        for j := i; j >= 0; j-- {
            if dp[j] >= ss[0] {
                dp[j+1] = max(dp[j+1], dp[j]+ss[1])
            }
        }
    }

    for i := 0; i < len(dp); i++ {
        if dp[i] >= target {
            return i
        }
    }
    return -1
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

文章作者: yudi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yudi !
评论
  目录