1518. 换水问题
大约 2 分钟
--- 

1518. 换水问题
- 标签:数学、模拟
- 难度:简单
题目链接
题目大意
描述:初始有 瓶水。每 个空瓶可以换 瓶新水。
要求:返回最多能喝多少瓶水。
说明:
- 。
- 。
示例:
- 示例 1:

输入:numBottles = 9, numExchange = 3
输出:13
解释:你可以用 3 个空瓶兑换 1 瓶水。
所以最多能喝到 9 + 3 + 1 = 13 瓶水。- 示例 2:

输入:numBottles = 15, numExchange = 4
输出:19
解释:你可以用 4 个空瓶兑换 1 瓶水。
所以最多能喝到 15 + 3 + 1 = 19 瓶水。解题思路
思路 1:模拟
1. 核心思想
模拟喝水、换空瓶的过程。初始 (已喝的数量),(空瓶数)。
当 时:
- 能换的新水瓶数 。
- 。
- 。
2. 具体步骤
第 1 步:。
第 2 步:当 ,重复上述过程。
第 3 步:返回 。
3. 举例说明
以 为例:
- 喝 ,空瓶 ,换 ,剩 空瓶。
- 再喝 ,,空瓶 ,换 ,剩 。
- 再喝 ,,空瓶 ,不够换。
总共 瓶。
以 为例:
- 喝 ,空瓶 ,换 。
- 再喝 ,,空瓶 ,不够换。
总共 瓶。
思路 1:代码
class Solution:
def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
total = empty = numBottles
while empty >= numExchange:
new = empty // numExchange
total += new
empty = empty % numExchange + new
return total思路 1:复杂度分析
- 时间复杂度:。
- 空间复杂度:。