Watering Plants II
Let’s solve the problem by simulating the process of Alice and Bob watering the plants. We’ll iterate over the plants and keep track of the water left in both Alice’s and Bob’s watering cans.
Here’s the code:
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
| class Solution:
def minimumRefill(self, plants: List[int], capacityA: int, capacityB: int) -> int:
refills = 0
waterA, waterB = capacityA, capacityB
left, right = 0, len(plants) - 1
# Iterate while left is less than or equal to right
while left <= right:
# If both Alice and Bob reach the same plant, compare their water level
if left == right:
if waterA < plants[left] and waterB < plants[left]:
refills += 1
break
# If Alice does not have enough water for the current plant, refill her can
if waterA < plants[left]:
waterA = capacityA
refills += 1
# If Bob does not have enough water for the current plant, refill his can
if waterB < plants[right]:
waterB = capacityB
refills += 1
# Water the plants and update the remaining water
waterA -= plants[left]
waterB -= plants[right]
# Move Alice and Bob to the next plants
left += 1
right -= 1
return refills
|
Here, we check if Alice and Bob have enough water to water the current plants. If not, they refill their cans, and we increment the count of refills. Then, we update their remaining water and move to the next plants.
The code returns the total number of times Alice and Bob have to refill their watering cans to water all the plants.