Leetcode

Water Bottles

Approach 1: $O(\log numBottles)$ space

  • Time:O(\log numBottles)
  • Space:O(1)

C++

class Solution {
 public:
  int numWaterBottles(int numBottles, int numExchange) {
    int ans = numBottles;

    while (numBottles >= numExchange) {
      ans += numBottles / numExchange;
      numBottles = numBottles / numExchange + numBottles % numExchange;
    }

    return ans;
  }
};

Approach 2: $O(1)$ space

  • Time:O(1)
  • Space:O(1)

C++

class Solution {
 public:
  int numWaterBottles(int numBottles, int numExchange) {
    return numBottles + (numBottles - 1) / (numExchange - 1);
  }
};