卡車有兩個油箱。給你兩個整數,mainTank
表示主油箱中的燃料(以升爲單位),additionalTank
表示副油箱中的燃料(以升爲單位)。
該卡車每耗費 1
升燃料都可以行駛 10
km。每當主油箱使用了 5
升燃料時,如果副油箱至少有 1
升燃料,則會將 1
升燃料從副油箱轉移到主油箱。
返回卡車可以行駛的最大距離。
注意:從副油箱向主油箱注入燃料不是連續行爲。這一事件會在每消耗 5
升燃料時突然且立即發生。
示例 1:
輸入:mainTank = 5, additionalTank = 10
輸出:60
解釋:
在用掉 5 升燃料後,主油箱中燃料還剩下 (5 - 5 + 1) = 1 升,行駛距離爲 50km 。
在用掉剩下的 1 升燃料後,沒有新的燃料注入到主油箱中,主油箱變爲空。
總行駛距離爲 60km 。
示例 2:
輸入:mainTank = 1, additionalTank = 2
輸出:10
解釋:
在用掉 1 升燃料後,主油箱變爲空。
總行駛距離爲 10km 。
提示:
1 <= mainTank, additionalTank <= 100
今天這個就還挺簡單的,沒啥技巧。
class Solution:
def distanceTraveled(self, mainTank: int, additionalTank: int) -> int:
ans = 0
while mainTank >= 5:
mainTank -= 5
ans += 50
if additionalTank > 0:
additionalTank -= 1
mainTank += 1
return ans + mainTank * 10
第二種就是數學方法,思路參考e個空瓶換一瓶酒的b瓶換水問題。
放在本題就是 n=⌊(mainTank−5)/4+1⌋=⌊(mainTank−1)/4⌋,考慮到副油箱中燃料是有限的,取兩者中最小值。
class Solution:
def distanceTraveled(self, mainTank: int, additionalTank: int) -> int:
return 10 * (mainTank + min((mainTank - 1) // 4, additionalTank))