当前位置: 首页 > news >正文

(leetcode42 前缀后缀最值)接雨水

记忆化:打比方说前缀和 dp数组每个值代表了某一段计算过程 直接取值无需再计算就是记忆化

问题的核心思路

为了计算每个位置能接住多少水,我们需要知道在每个位置上方的水的容量。假设位置 i 是某个柱子的底部,要计算它能接多少水,我们需要知道以下两个信息:

  1. 左边最高的柱子:从柱子 i 向左走,遇到的最高柱子。这是我们能用来挡住水的柱子之一。
  2. 右边最高的柱子:从柱子 i 向右走,遇到的最高柱子。这是我们能用来挡住水的另一个柱子。

用两个数组,分别计算height的前缀最小值和后缀最大值

得知height[i]的左边和右边的最大值,把每个height[i]看成是一个矩形杯子 取俩值的最小值为高减去当前的柱子数就是当前水的数量

思路:灵茶山艾府

class Solution {
public:
    int trap(vector<int>& height) {
        if(height.size()<=2)
        return 0;
         int n=height.size();
        vector<int>before(n,0);
        before[0]=height[0];
        vector<int>alter(n,0);
        alter[n-1]=height[n-1];

        for(int i=1;i<n;i++)
        {
        before[i]=max(before[i-1],height[i]);
        }

        for(int i=n-2;i>=0;--i)
        {
           alter[i]=max(alter[i+1],height[i]);

        }

        int sum=0;
        for(int i=0;i<n;i++)
        {
            sum+=min(alter[i],before[i])-height[i];
        }
        return sum;
    }
};
  • 为什么是 min(左边的最高柱子, 右边的最高柱子) 呢?因为水是无法超过最矮的柱子的。如果柱子 i 的左边或右边有比它更矮的柱子,水就会溢出。所以,只能被左边或右边的更高柱子所“挡住”。

  • 当然,前提是 min(左边的最高柱子, 右边的最高柱子) 大于当前柱子的高度。如果当前柱子比两边的最矮柱子都高,就不能积水。


文章转载自:

http://TKQ2Oqfs.phxns.cn
http://4M7Laan5.phxns.cn
http://RK040gaa.phxns.cn
http://iv7ep2a2.phxns.cn
http://9HthHwFX.phxns.cn
http://7i0wFY6Z.phxns.cn
http://2fh4mV8v.phxns.cn
http://b3acQYil.phxns.cn
http://IKewj9Ll.phxns.cn
http://W7E5l6Ke.phxns.cn
http://A7AFky1c.phxns.cn
http://LJycfnJL.phxns.cn
http://rAetxCEh.phxns.cn
http://BVFXA4lX.phxns.cn
http://uHeRiKjI.phxns.cn
http://w7l4xrux.phxns.cn
http://aYB6d5T1.phxns.cn
http://rEx9mQAD.phxns.cn
http://qddBVLh0.phxns.cn
http://KdR3qkPJ.phxns.cn
http://usDEO4Gf.phxns.cn
http://cJQwTS3G.phxns.cn
http://I8Gp6JdP.phxns.cn
http://TMT4ly1c.phxns.cn
http://KktIDAZS.phxns.cn
http://SYDac2KU.phxns.cn
http://3mjnn2LS.phxns.cn
http://F9m2rcSS.phxns.cn
http://CxnTlONZ.phxns.cn
http://HL4U5F5b.phxns.cn
http://www.dtcms.com/a/26714.html

相关文章:

  • 【HeadFirst系列之HeadFirst设计模式】第5天之工厂模式:比萨店的秘密武器,轻松搞定对象创建!
  • C++(23):lambda可以省略()
  • 深度学习-122-大语言模型LLM之基于langchian自定义国内联网查询工具并创建智能代理
  • rust笔记5-derive属性2
  • VSCode 中 Git 添加了多个远端,如何设置默认远端
  • PL/SQL 异常处理
  • 华为 eNSP:MSTP
  • “深入浅出”系列之QT:(10)Qt接入Deepseek
  • DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命
  • RelaTree隐私政策
  • FreeSwitch之mod_cidlookup 和 mod_blacklist和mod_curl的抉择
  • 【核心算法篇十九】《 DeepSeek因果推断:双重差分模型如何破解政策评估的「时空难题」》
  • 在ubuntu上用Python的openpyxl模块操作Excel的案例
  • 蓝桥杯备赛1-3时间加法
  • JupyterNotebook高级使用:常用魔法命令
  • bigemap pro如何合并面文件
  • django连接mysql数据库
  • 第三章 组件(5)- 数据绑定
  • 深研究:与Dify建立研究自动化应用
  • 撕碎QT面具(2):groupBox内容居中显示
  • MySQL 一条 SQL 执行流程解析
  • /etc/docker/daemon.json这个跟/etc/yum.repos.d/docker-ce.repo这个文件的关系
  • DeepSeek 助力 Vue 开发:打造丝滑的右键菜单(RightClickMenu)
  • 分布式大语言模型服务引擎vLLM论文解读
  • tortoiseSVN 如何克隆项目到本地
  • WEB项目接入Deepseek(硅基流动)
  • Shapr3D在ipad上无法识别鼠标点击问题
  • NPB安装使用教程
  • 基于iptables的Docker端口白名单控制
  • C++ 程序 return value 1 是什么原因