42. 接雨水

难度困难3164

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

  • n == height.length
  • 1 <= n <= 2 * 104
  • 0 <= height[i] <= 105

解题报告:

维护前缀max和后缀max求解,空间复杂度是On的。

然后经典用双指针优化空间复杂度到O1.

把这个题和zyb证明法的那个题结合起来看看,都是证明双指针的正确性的。

AC代码:

class Solution {
public:/*** max water* @param arr int整型vector the array* @return long长整型*/long long maxWater(vector<int>& arr) {// write code hereint n = arr.size();vector<int> lmx(n+1,0), rmx(n+1,0);for(int i = 0; i<n; i++) {lmx[i] = max(lmx[i-1], arr[i]);}for(int i = n-1; i>=0; i--) {rmx[i] = max(rmx[i+1], arr[i]);}long long ans = 0;for(int i = 0; i<n; i++) {ans += min(lmx[i], rmx[i]) - arr[i];}return ans;}
};

【LeetCode - 42. 接雨水】相关推荐

  1. LeetCode 42. 接雨水(双指针、单调栈)

    文章目录 1. 题目 2. 解题 2.1 正反扫描法 2.2 双指针 2.3 单调栈 1. 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上 ...

  2. 使用单调栈解决接雨水问题——LeetCode 42 接雨水+单调栈说明

    题目内容 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输 ...

  3. Leetcode 42.接雨水 (每日一题 20210629)

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水.示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释: ...

  4. leetcode 42. 接雨水 思考分析(暴力、动态规划、双指针、单调栈)

    目录 题目 思路 暴力法 动态规划 双指针法 单调栈 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 输入:height = [0,1,0,2 ...

  5. leetcode 42 接雨水 单调栈

    接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下 ...

  6. leetcode 42. 接雨水

    题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 解法 双指针法 ...

  7. LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述

    LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...

  8. LeetCode 42 Trapping Rain Water 收集雨水

    LeetCode 42 Trapping Rain Water 收集雨水 Given n non-negative integers representing an elevation map whe ...

  9. 42. 接雨水 golang

    42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这 ...

最新文章

  1. 伪元素first-letter
  2. Vsftpd 服务的部署及优化
  3. VS2008常见编译错误(总结篇)
  4. Docker 安装Grafana可视化面板
  5. 杠件受力分析 第一章 杠件受力分析
  6. python中异常和错误是一个概念_Python的异常概念介绍以及处理
  7. matlab 多项式表达,Matlab多项式运算
  8. PAT-乙级-1039. 到底买不买(20)
  9. LeetCode Map Sum Pairs
  10. 多处理器系统下的伪共享(false sharing)问题
  11. 计算机网络安全题库,2020年计算机网络安全与管理信息题库10月更新
  12. 宏碁电脑安装linux,ubuntu安装篇——acer 4750G ubuntu安装详解
  13. win10共享打印机搜索不到计算机,win10找不到共享打印机 win10搜不到共享打印机 - 云骑士一键重装系统...
  14. 1534 棋子游戏(博弈论,未知规律... ...)
  15. Unity接入海康威视门禁(获取门禁状态信息、门禁反控等)
  16. (Note)同比和环比
  17. android sd卡数据恢复软件下载,内存卡数据恢复
  18. Vue2.0源码解析 - 知其然知其所以然之Vue.use
  19. VB6.0中关于setfocus用法
  20. Excel中数据透视表数据源更新的三种方式

热门文章

  1. 301. Remove Invalid Parentheses
  2. [Linux][Ubuntu]Linux实习常用操作/Debug总结
  3. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]
  4. android 广播唤醒应用,Android通过广播实现灭屏和唤醒
  5. php npm,php – Laravel中NPM,Composer和Bower的区别?
  6. oracle禁止修改密码,Oracle 用户密码过期后不允许修改密码的示例代码
  7. win7 管理iphone日历_大师给你传授win7系统安装桌面日历的途径
  8. Java设计模式笔记(1)单例模式
  9. oracle数据库领域,菜鸟成长课程之《Oracle数据库职业直通车》,引领大家真正进入Oracle数据库领域...
  10. sqlite3_exec