Pour Water
You are given an array of heights that represents the terrain and are required to pour a specific volume of water at a certain index ( k ). The water follows specific rules to move to the left, right, or stay in place.
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
 class Solution:
def pourWater(self, heights: List[int], volume: int, k: int) > List[int]:
# Iterate for the given volume of water
for _ in range(volume):
pos = k # Initialize the position of the droplet
# Move left if possible
for i in range(k  1, 1, 1):
if heights[i] < heights[i + 1]:
pos = i
elif heights[i] > heights[i + 1]:
break
# If the droplet doesn't move left, then try moving right
if pos == k:
for i in range(k + 1, len(heights)):
if heights[i] < heights[i  1]:
pos = i
elif heights[i] > heights[i  1]:
break
# Increment the height at the droplet's position
heights[pos] += 1
return heights

Here’s how the code works:
 For each droplet (iterated by the given volume), try to move it to the left by checking the conditions.
 If the droplet doesn’t move left, then try moving it to the right.
 Increment the height at the final position of the droplet.
This code follows the given constraints and requirements, and the time complexity of this solution is ( O(\text{volume} \times \text{heights.length}) ).