题意
题解
模拟
class Solution {
public:
int wateringPlants(vector<int>& plants, int capacity) {
int ans = 0, now = capacity, pos = -1, n = plants.size();
for (int i = 0; i < n; ++i) {
ans += i - pos;
pos = i;
now -= plants[i];
if (i + 1 < n && now < plants[i + 1]) {
pos = -1;
ans += i - pos;
now = capacity;
}
}
return ans;
}
};
class Solution:
def wateringPlants(self, plants: List[int], capacity: int) -> int:
ans, cur = 0, capacity
for i, plant in enumerate(plants):
if cur < plant:
cur = capacity
ans += 2 * i + 1
else:
ans += 1
cur -= plant
return ans
func wateringPlants(plants []int, capacity int) int {
ans := len(plants)
water := capacity // 初始水量
for i, need := range plants {
if water < need {
ans += 2 * i // 往返
water = capacity // 重置水量
}
water -= need
}
return ans
}