zentan66 / daily-coding

日常手写算法,编程题
0 stars 0 forks source link

【⭐️】LeetCode-换酒问题 #38

Open zentan66 opened 3 years ago

zentan66 commented 3 years ago

小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。

如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。

请你计算 最多 能喝到多少瓶酒。

zentan66 commented 3 years ago

编码

个人解法

var numWaterBottles = function (numBottles, numExchange) {
  let count = 0,
    restBottles = 0 // 空瓶子数量
  while (numBottles > 0) {
    const n = Math.floor((numBottles + restBottles) / numExchange)
    count += numBottles // 总共喝过的酒数量
    restBottles = (numBottles + restBottles) % numExchange
    numBottles = n // 可以喝的酒的数量
  }
  return count
}

推荐解法

var numWaterBottles = function (numBottles, numExchange) {
  let bottle = numBottles,
    ans = numBottles
  while (bottle >= numExchange) {
    bottle -= numExchange
    ++ans
    ++bottle
  }
  return ans
}