【题解】42. 接雨水(动态规划 预处理)

https://leetcode.cn/problems/trapping-rain-water/description/
在这里插入图片描述

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size();

        // 预处理数组
        vector<int> lefts(n, 0);
        vector<int> rights(n, 0);

        // 预处理记录左侧最大值
        lefts[0] = height[0];
        for (int i = 1; i < n; ++i) {
            lefts[i] = max(lefts[i-1], height[i]);
        }

        // 预处理记录右侧最大值
        rights[n-1] = height[n-1];
        for (int i = n - 2; i > 0; --i) {
            rights[i] = max(rights[i+1], height[i]);
        }

        // 将每个柱子可以接到水的值进行累加
        int ret = 0;
        for (int i = 0; i < n; ++i) 
        {
            if (min(lefts[i], rights[i]) - height[i] > 0)
                ret += min(lefts[i], rights[i]) - height[i];
        }    

        return ret;
    }
};

相关推荐

  1. 【困难】42. 雨水

    2024-07-14 03:14:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 03:14:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 03:14:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 03:14:03       58 阅读
  4. Python语言-面向对象

    2024-07-14 03:14:03       69 阅读

热门阅读

  1. git 如何查看 commit 77062497

    2024-07-14 03:14:03       16 阅读
  2. 策略模式适用场景与具体实例解析

    2024-07-14 03:14:03       24 阅读
  3. Linux猜数字游戏

    2024-07-14 03:14:03       19 阅读
  4. Node.js_mongodb数据迁移

    2024-07-14 03:14:03       15 阅读
  5. kubernetes 踩坑记录

    2024-07-14 03:14:03       19 阅读
  6. Mojolicious命令行工具:自动化Web开发的瑞士军刀

    2024-07-14 03:14:03       16 阅读