871. Minimum Number of Refueling Stops
https://leetcode.com/problems/minimum-number-of-refueling-stops/
给定一系列加油站的位置和从该加油站加油后能跑多远,问在有startFule这么多的初始可跑里程,最少加几次油可到达target。题目和Jump Game II很像,都是元素值代表能跳多远,找最少跳的次数。因此用greedy或DP解。greedy维持一个当前的window代表这次能走的range,遍历window后找出window内路过的加油站最远能到哪,作为下一个window的边界。DP 根据加油站分成i个子问题,action为在i加或不加油,限制是能否到达i加油站。但如果用常规背包写法把限制encoding进j,让j作为里程看dp[i - 1][j - s[i]],j的范围会非常大。需要换个思路,优化目标不作为dp元素值而是作为状态,并把限制放进值,即dp[i][j]存前i个加油站加j次油最远能到达的距离。
DP思路参考自花花。
Last updated
Was this helpful?