返回介绍

solution / 1500-1599 / 1518.Water Bottles / README

发布于 2024-06-17 01:03:18 字数 3874 浏览 0 评论 0 收藏 0

1518. 换水问题

English Version

题目描述

超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。

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

给你两个整数 numBottlesnumExchange ,返回你 最多 可以喝到多少瓶水。

 

示例 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 <= numBottles <= 100
  • 2 <= numExchange <= 100

解法

方法一:模拟

我们可以直接模拟整个过程。

初始时,我们有 numBottles 瓶水,因此可以喝到 ans = numBottles 瓶水,然后得到 numBottles 个空瓶子。

接下来,如果我们有 numExchange 个空瓶子,那么我们可以用它们兑换一瓶水并喝掉,此时我们剩余的空瓶子数量为 numBottles - numExchange + 1,然后我们累加喝到的水的数量,即 $ans = ans + 1$。

最后,返回 ans 即可。

时间复杂度 $(\frac{numBottles}{numExchange})$,空间复杂度 $O(1)$。

class Solution:
  def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
    ans = numBottles
    while numBottles >= numExchange:
      numBottles -= numExchange - 1
      ans += 1
    return ans
class Solution {
  public int numWaterBottles(int numBottles, int numExchange) {
    int ans = numBottles;
    for (; numBottles >= numExchange; ++ans) {
      numBottles -= (numExchange - 1);
    }
    return ans;
  }
}
class Solution {
public:
  int numWaterBottles(int numBottles, int numExchange) {
    int ans = numBottles;
    for (; numBottles >= numExchange; ++ans) {
      numBottles -= (numExchange - 1);
    }
    return ans;
  }
};
func numWaterBottles(numBottles int, numExchange int) int {
  ans := numBottles
  for ; numBottles >= numExchange; ans++ {
    numBottles -= (numExchange - 1)
  }
  return ans
}
function numWaterBottles(numBottles: number, numExchange: number): number {
  let ans = numBottles;
  for (; numBottles >= numExchange; ++ans) {
    numBottles -= numExchange - 1;
  }
  return ans;
}
/**
 * @param {number} numBottles
 * @param {number} numExchange
 * @return {number}
 */
var numWaterBottles = function (numBottles, numExchange) {
  let ans = numBottles;
  for (; numBottles >= numExchange; ++ans) {
    numBottles -= numExchange - 1;
  }
  return ans;
};
class Solution {
  /**
   * @param Integer $numBottles
   * @param Integer $numExchange
   * @return Integer
   */
  function numWaterBottles($numBottles, $numExchange) {
    $ans = $numBottles;
    while ($numBottles >= $numExchange) {
      $numBottles = $numBottles - $numExchange + 1;
      $ans++;
    }
    return $ans;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文