题目:
卡车有两个油箱。给你两个整数,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
提交通过: