【每日一題】總行駛距離

2739. 總行駛距離

卡車有兩個油箱。給你兩個整數,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=⌊(mainTank5​)/4+1=⌊(mainTank1)/4⌋,考慮到副油箱中燃料是有限的,取兩者中最小值。

class Solution:
    def distanceTraveled(self, mainTank: int, additionalTank: int) -> int:
        return 10 * (mainTank + min((mainTank - 1) // 4, additionalTank))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章