一般解法
class Solution:
def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
# res表示最终我们能换到酒的数量
res = numBottles
if numBottles < numExchange:
return res
while numBottles >= numExchange:
# last_blank表示换完之后剩余瓶子的数量
last_blank = numBottles % numExchange
# 新换的酒的数量
new_bottle = numBottles // numExchange
res += new_bottle
numBottles = last_blank + new_bottle
# 直到不能满足换酒条件终止
return res
2第二种解法
直接考虑终止条件,即b-n(e-1)>=e,其中e-1表示实际换酒需要的空瓶个数
直接可以推出求解n的公式,其中b>=e,所以需要加一
def numWaterBottles(numBottles, numExchange):
return (numBottles - numExchange) // (numExchange - 1) + 1 + numBottles if numBottles >= numExchange else numBottles
空瓶换酒问题算法
本文介绍了两种解决空瓶换酒问题的有效算法:一种是一般解法,通过循环计算直至无法继续兑换为止;另一种则是利用数学公式直接求解。两种方法都详细阐述了如何根据已有的酒瓶数量和兑换规则来确定总共能喝到多少瓶酒。
1451

被折叠的 条评论
为什么被折叠?



