-
Notifications
You must be signed in to change notification settings - Fork 0
/
water-bottles_1518.py
35 lines (25 loc) · 1.22 KB
/
water-bottles_1518.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# There are numBottles water bottles that are initially full of water. You can exchange numExchange empty water bottles from the market with one full water bottle.
# The operation of drinking a full water bottle turns it into an empty bottle.
# Given the two integers numBottles and numExchange, 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.
# ---------------------------------------Runtime 42 ms Beats 55.33% Memory 16.3 MB Beats 14.44%---------------------------------------
# My solution
# Time Complexity O(n)
class Solution:
def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
ans = numBottles
d, f = divmod(numBottles, numExchange)
ans += d
while sum([d, f]) >= numExchange:
d, f = divmod(sum([d, f]), numExchange)
ans += d
return ans