2025-10-02 Daily Challenge
Today I have done leetcode's October LeetCoding Challenge with cpp
.
October LeetCoding Challenge 2
Description
Water Bottles II
You are given two integers numBottles
and numExchange
.
numBottles
represents the number of full water bottles that you initially have. In one operation, you can perform one of the following operations:
- Drink any number of full water bottles turning them into empty bottles.
- Exchange
numExchange
empty bottles with one full water bottle. Then, increasenumExchange
by one.
Note that you cannot exchange multiple batches of empty bottles for the same value of numExchange
. For example, if numBottles == 3
and numExchange == 1
, you cannot exchange 3
empty water bottles for 3
full bottles.
Return the maximum number of water bottles you can drink.
Example 1:

Input: numBottles = 13, numExchange = 6 Output: 15 Explanation: The table above shows the number of full water bottles, empty water bottles, the value of numExchange, and the number of bottles drunk.
Example 2:

Input: numBottles = 10, numExchange = 3 Output: 13 Explanation: The table above shows the number of full water bottles, empty water bottles, the value of numExchange, and the number of bottles drunk.
Constraints:
1 <= numBottles <= 100
1 <= numExchange <= 100
Solution
class Solution {
public:
int maxBottlesDrunk(int numBottles, int numExchange) {
int drunk = 0;
while(numBottles >= numExchange) {
drunk += numExchange;
numBottles -= numExchange - 1;
numExchange += 1;
}
return drunk + numBottles;
}
};
// Accepted
// 958/958 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 44.88 % of cpp submissions (8.5 MB)