🥉Easy
注意边界条件
小区便利店正在促销,用 numExchange
个空酒瓶可以兑换一瓶新酒。你购入了 numBottles
瓶酒。
如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。
请你计算 最多 能喝到多少瓶酒。
示例一
输入:numBottles = 15, numExchange = 4
输出:19
解释:你可以用 4 个空酒瓶兑换 1 瓶酒。
所以最多能喝到 15 + 3 + 1 = 19 瓶酒。
示例二
输入:numBottles = 15, numExchange = 4
输出:19
解释:你可以用 4 个空酒瓶兑换 1 瓶酒。
所以最多能喝到 15 + 3 + 1 = 19 瓶酒。
示例三
输入:numBottles = 5, numExchange = 5
输出:6
题解
这道题还是挺简单的,捋顺整个流程,写代码就好了:
JavaScript
一定要注意边界条件,刚刚漏写了等号,就错了
/**
* @param {number} numBottles
* @param {number} numExchange
* @return {number}
*/
var numWaterBottles = function(numBottles, numExchange) {
let sum = numBottles
while (numBottles >= numExchange){
let drink = Math.floor(numBottles / numExchange)
sum+=drink
numBottles = numBottles - drink*numExchange + drink
}
return sum
};
使用了递归
/**
* @param {number} numBottles
* @param {number} numExchange
* @return {number}
*/
var numWaterBottles = function(numBottles, numExchange) {
let all = numBottles
let rest = numBottles // 剩下的空瓶子
const generate = function (Bottles) {
rest = Bottles % numExchange
let temp = Math.floor(Bottles / numExchange)
all += temp
if (rest + temp >= numExchange) {
generate(rest + temp)
}
}
generate(rest)
return all
};
Python
class Solution:
def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
sum = numBottles
while numBottles >= numExchange:
drink = numBottles // numExchange
sum+=drink
numBottles = numBottles - drink * numExchange + drink
return sum