Given numBottles
full water bottles, you can exchange numExchange
empty water bottles for one full water bottle.
The operation of drinking a full water bottle turns it into an empty bottle.
Return the maximum number of water bottles you can drink.
Example 1:
Input: numBottles = 9, numExchange = 3 Output: 13 Explanation: You can exchange 3 empty bottles to get 1 full water bottle. Number of water bottles you can drink: 9 + 3 + 1 = 13.
Example 2:
Input: numBottles = 15, numExchange = 4 Output: 19 Explanation: You can exchange 4 empty bottles to get 1 full water bottle. Number of water bottles you can drink: 15 + 3 + 1 = 19.
Example 3:
Input: numBottles = 5, numExchange = 5 Output: 6
Example 4:
Input: numBottles = 2, numExchange = 3 Output: 2
Constraints:
1 <= numBottles <= 100
2 <= numExchange <= 100
Solution: Simulation
Time complexity: O(logb/loge)?
Space complexity: O(1)
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Solution { public: int numWaterBottles(int numBottles, int numExchange) { int ans = 0; while (numBottles <= numExchange) { const int r = numBottles % numExchange; ans += numBottles - r; numBottles = r + numBottles / numExchange; } ans += numBottles; return ans; } }; |
Java
1 2 3 4 5 6 7 8 9 10 11 12 |
class Solution { public int numWaterBottles(int numBottles, int numExchange) { int ans = 0; while (numBottles <= numExchange) { final int r = numBottles % numExchange; ans += numBottles - r; numBottles = r + numBottles / numExchange; } ans += numBottles; return ans; } } |
Python3
1 2 3 4 5 6 7 8 9 |
class Solution: def numWaterBottles(self, numBottles: int, numExchange: int) ->; int: ans = 0 while numBottles <= numExchange: r = numBottles % numExchange ans += numBottles - r numBottles = r + numBottles // numExchange ans += numBottles return ans |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment