初学python记录:力扣2739. 总行驶距离

题目:

卡车有两个油箱。给你两个整数,mainTank 表示主油箱中的燃料(以升为单位),additionalTank 表示副油箱中的燃料(以升为单位)。

该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了 5 升燃料时,如果副油箱至少有 1 升燃料,则会将 1 升燃料从副油箱转移到主油箱。

返回卡车可以行驶的最大距离。

注意:从副油箱向主油箱注入燃料不是连续行为。这一事件会在每消耗 5 升燃料时突然且立即发生。

思考:

最简单的一集.jpg

算法如下:

1. 主油箱燃料不为空且小于5升:说明不能从副油箱转移燃料,行驶距离+主油箱燃料*10 即为答案

2. 主油箱燃料大于等于5升:说明可以从副油箱转移燃料,行驶距离+50,主油箱燃料-5。若副油箱有燃料,则副油箱燃料-1,主油箱燃料+1。重复步骤1,2至得到答案为止。

代码如下:

class Solution(object):
    def distanceTraveled(self, mainTank, additionalTank):
        """
        :type mainTank: int
        :type additionalTank: int
        :rtype: int
        """
        ans = 0
        while mainTank > 0:
            if mainTank < 5:
                ans += mainTank * 10
                break
            else:
                ans += 50
                mainTank -= 5
                if additionalTank > 0:
                    additionalTank -= 1
                    mainTank += 1
        return ans

提交通过:

 

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值