列表

详情


100235. 换水问题 II

给你两个整数 numBottlesnumExchange

numBottles 代表你最初拥有的满水瓶数量。在一次操作中,你可以执行以下操作之一:

注意,你不能使用相同的 numExchange 值交换多批空水瓶。例如,如果 numBottles == 3 并且 numExchange == 1 ,则不能用 3 个空水瓶交换成 3 个满水瓶。

返回你 最多 可以喝到多少瓶水。

 

示例 1:

输入:numBottles = 13, numExchange = 6
输出:15
解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量。

示例 2:

输入:numBottles = 10, numExchange = 3
输出:13
解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int maxBottlesDrunk(int numBottles, int numExchange) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2.3 MB, 提交时间: 2024-03-31 21:44:35

func maxBottlesDrunk(numBottles, numExchange int) int {
	ans := numBottles // 一开始就全部喝完
	for numBottles >= numExchange { // 有足够的空瓶
		ans++ // 用 numExchange 个空瓶交换,然后喝掉,产生一个新的空瓶
		numBottles += 1 - numExchange
		numExchange++
	}
	return ans
}

cpp 解法, 执行用时: 0 ms, 内存消耗: 7.4 MB, 提交时间: 2024-03-31 21:44:19

class Solution {
public:
    int maxBottlesDrunk(int numBottles, int numExchange) {
        int ans = numBottles; // 一开始就全部喝完
        while (numBottles >= numExchange) { // 有足够的空瓶
            ans++; // 用 numExchange 个空瓶交换,然后喝掉,产生一个新的空瓶
            numBottles += 1 - numExchange++;
        }
        return ans;
    }
};

java 解法, 执行用时: 0 ms, 内存消耗: 39.9 MB, 提交时间: 2024-03-31 21:44:05

class Solution {
    public int maxBottlesDrunk(int numBottles, int numExchange) {
        int ans = numBottles; // 一开始就全部喝完
        while (numBottles >= numExchange) { // 有足够的空瓶
            ans++; // 用 numExchange 个空瓶交换,然后喝掉,产生一个新的空瓶
            numBottles += 1 - numExchange++;
        }
        return ans;
    }
}

python3 解法, 执行用时: 34 ms, 内存消耗: 16.5 MB, 提交时间: 2024-03-31 21:43:50

class Solution:
    def maxBottlesDrunk(self, numBottles: int, numExchange: int) -> int:
        ans = numBottles  # 一开始就全部喝完
        while numBottles >= numExchange:  # 有足够的空瓶
            ans += 1  # 用 numExchange 个空瓶交换,然后喝掉,产生一个新的空瓶
            numBottles += 1 - numExchange
            numExchange += 1
        return ans

上一题