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

力扣42.接雨水

力扣42.接雨水

前后缀数组

  • 对于每个一个位置

    • 求其前面最高高度pre_max[i] = max(pre_max[i-1] , h[i])
    • 和后面最高高度suf_max[i] = max(suf_max[i+1] , h[i])
    • 当前i处的水容量 为min(pre_max[i] , suf_max[i]) - h[i]
  •   class Solution {public:int trap(vector<int>& height) {int n = height.size();vector<int> pre_max(n),suf_max(n);pre_max[0] = height[0];suf_max[n-1] = height[n-1];for(int i=1;i<n;i++)pre_max[i] = max(pre_max[i-1],height[i]);for(int i=n-2;i>=0;i--)suf_max[i] = max(suf_max[i+1],height[i]);int res=0;for(int i=0;i<n;i++)res += min(pre_max[i],suf_max[i]) - height[i];return res;}};
    

双指针

  • 考虑不用数组存pre_max和suf_max而改用实时更新

    • 每到达一个位置时 更新pre_max和suf_max
    • 若pre_max < suf_max 说明当前水容量为 pre_max(小的) - h[i]
    • 反之亦然
  •   class Solution {public:int trap(vector<int>& height) {int n = height.size();int l = 0,r = n-1;int res=0;int pre_max = 0,suf_max = 0;while(l <= r){pre_max = max(pre_max,height[l]);suf_max = max(suf_max,height[r]);if(pre_max < suf_max){res += pre_max - height[l];l ++;}else{res += suf_max - height[r];r --;}}return res;}};
    
http://www.lryc.cn/news/380205.html

相关文章:

  • 国产数据库与MYSQL兼容性?开发应该怎么选择?
  • Spring框架中Bean的生命周期
  • 从零到一学FFmpeg:avformat_alloc_output_context2 函数详析与实战
  • Lua 绕过元表
  • pip方法总结(极简快速掌握)
  • aigc基础概念(一)
  • USB学习——12、usb初始化和插拔驱动软件流程大致框架描述
  • 【ARMv8/ARMv9 硬件加速系列 2.4 -- ARM NEON Q寄存器与V寄存器的关系】
  • Oracle中递归查询(START WITH……CONNECT BY……)
  • 【云原生|K8S系列】如何创建Kubernetes job和Cronjobs 入门指南
  • 力扣每日一题 6/23 字符串/模拟
  • Google trend搜索关键词
  • Unity C#调用Android,IOS震动功能
  • Ruby 注释
  • C语言入门系列:特殊的main函数和exit函数
  • JAVA复习3
  • Oracle共享内存不释放
  • windows cmd中单引号和双引号的问题
  • Nacos 2.x 系列【15】数据源插件支持达梦、Oracel、PostgreSQL......
  • HJ39判断两个IP是否属于同一子网(中)
  • 渗透测试基础(二) Linux+Win常用命令介绍
  • 手机usb共享网络电脑没反应的方法
  • Scrivener v3 解锁版安装教程 (写作辅助软件)
  • Python开发——用什么数据储存结构复杂的数据
  • 【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)
  • 前端核心框架Vue指令详解
  • SD卡无法读取?原因分析与数据恢复策略
  • 线程池的工作原理
  • Nikto一键扫描Web服务器(KALI工具系列三十)
  • 全局变量和局部变量