LC2079 给植物浇水

LC2079 给植物浇水

题目链接

LC2079 给植物浇水

解题思路

  1. 在要浇水前就判断罐子中剩余的水能否浇下一盆植物。
  2. 若能够浇下一盆植物,前进一步,罐子中的水减去相应容量。
  3. 若不能浇下一盆植物,需要去河边也就是 x = -1 处重新灌满水,一去一回所需要走的步数为 2 * p
  4. 返回结果。

解题代码

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)

posted @ 2024-05-08 13:30  Sstarry  阅读(7)  评论(0)    收藏  举报