LC2079 给植物浇水
LC2079 给植物浇水
题目链接
解题思路
- 在要浇水前就判断罐子中剩余的水能否浇下一盆植物。
- 若能够浇下一盆植物,前进一步,罐子中的水减去相应容量。
- 若不能浇下一盆植物,需要去河边也就是
x = -1处重新灌满水,一去一回所需要走的步数为2 * p。 - 返回结果。
解题代码
class Solution {
public int wateringPlants(int[] plants, int capacity) {
int result = 0;
int p = 0;
int record = capacity;
while (p < plants.length) {
if (capacity >= plants[p]) {
capacity -= plants[p];
result++;
p++;
} else {
result += 2 * p;
capacity = record;
}
}
return result;
}
}
复杂度分析
时间复杂度:p 指针只向前走,不后退。时间复杂度为 O(n),n 为 数组plants的长度。
空间复杂度:只用到了有限个数的变量,和数组plants的长度无关。空间复杂度为 O(1)。

浙公网安备 33010602011771号