方法一 个人方法
emptyBottles为空瓶数量,初始值为numBottles,maxBottles为最多能喝到多少瓶水的数量,初始值也为numBottles,exchangeBottles为每次用空瓶能换到水的数量
用空瓶不断去换水,maxBottles每次累加换到的水的数量,换了的水喝完又变成空瓶,emptyBottles又要加上换到的水的数量,以此循环直到空瓶的数量换不了水为止
var numWaterBottles = function(numBottles, numExchange) {
let emptyBottles=numBottles,maxBottles=numBottles,exchangeBottles
while(emptyBottles/numExchange>=1){
exchangeBottles=Math.floor(emptyBottles/numExchange)
emptyBottles=emptyBottles%numExchange
maxBottles+=exchangeBottles
emptyBottles+=exchangeBottles
}
return maxBottles
};
消耗时间和内存情况:
方法二 数学
作者:力扣官方题解
链接:官方题解leetcode.1518换水问题
var numWaterBottles = function(numBottles, numExchange) {
return numBottles >= numExchange ? Math.floor((numBottles - numExchange) / (numExchange - 1)) + 1 + numBottles : numBottles;
};
消耗时间和内存情况: