【LeetCode 42】接雨水
【题解】
考虑每个位置它最后能接多少单位的水。
显然就是这个min(位置左边最高的位置,位置右边最高的位置)-当前这个位置的高度。
这就是这个位置最后水上涨的高度。
两个边界注意是不会储水的(都会掉到左边或者右边的边界外去).
每个位置左边最高的位置可以用DP很容易搞出来
【代码】
class Solution {
public:
    const int N = 1e5;
    int trap(vector<int>& height) {
        int maleft[N+10],maright[N+10];
        memset(maleft,0,sizeof(maleft));memset(maright,0,sizeof(maright));
        int n = height.size();
        for (int i = 0;i < n;i++){
            if (i>0) maleft[i] = maleft[i-1];
            maleft[i] = max(maleft[i],height[i]);
        }
        for (int i = n-1;i>=0;i--){
            if (i<n-1) maright[i] = maright[i+1];
            maright[i] = max(maright[i],height[i]);
        }
        int ans = 0;
        for (int i = 1;i < n-1;i++){
            //cout<<maleft[i]<<" "<<maright[i]<<endl;
            ans = ans + min(maright[i],maleft[i])-height[i];
        }
        return ans;
    }
};
												
											【LeetCode 42】接雨水的更多相关文章
- Java实现 LeetCode 42 接雨水
		
42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这 ...
 - [LeetCode]42. 接雨水(双指针,DP)
		
题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下, ...
 - leetcode 42. 接雨水  JAVA
		
题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下 ...
 - Leetcode 42.接雨水
		
接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下 ...
 - Leetcode 42 接雨水  双指针
		
地址 https://leetcode-cn.com/problems/trapping-rain-water/ 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能 ...
 - LeetCode 42. 接雨水(Trapping Rain Water)
		
题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况 ...
 - LeetCode(42.接雨水)多解法详解
		
接雨水解法详解: 题目: 基本思路:从图上可以看出要想接住雨水,必须是凹字形的,也就是当前位置的左右两边必须存在高度大于它的地方,所以我们要想知道当前位置最多能存储多少水,只需找到左边最高处max_l ...
 - LeetCode 42接雨水 按行求解(差分+排序)
		
按行求解的思路比较清晰明了,但是这个方法的复杂度高达O(heightSize*sum(height[i])),几乎高达O(N^2). 但是也并不是不可以解决,经观察我们可以发现,这个算法的缺点在于要遍 ...
 - 每日一题 LeetCode 42.接雨水 【双指针】
		
题目链接 https://leetcode-cn.com/problems/trapping-rain-water/ 题目说明 题解 主要方法:双指针 + 正反遍历 解释说明: 正向遍历:先确定池子左 ...
 - LeetCode:接雨水【42】
		
LeetCode:接雨水[42] 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1, ...
 
随机推荐
- DB-MDM:MDM/主数据管理 百科
			
ylbtech-DB-MDM:MDM/主数据管理 百科 主数据管理(MDM Master Data Management)描述了一组规程.技术和解决方案,这些规程.技术和解决方案用于为所有利益相关方( ...
 - Oracle查询中文乱码
			
1.查询Oracle服务端字符集 SQL> select userenv('language') from dual ; USERENV('LANGUAGE') ---------------- ...
 - Flask-SQLALchemy动态的filter_by和filter
			
1.filter_by filter_by用于查询简单的列名,不支持比较运算符. filters = {'name': 'fengyao', 'age': 26} User.query.filter_ ...
 - gitlab+jenkins自动化打包APK
			
前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...
 - windows下使用pycharm开发基于ansible api的python程序
			
Window下python安装ansible,基于ansible api开发python程序 在windows下使用pycharm开发基于ansible api的python程序时,发现ansible ...
 - 拒绝从入门到放弃_《Openstack 设计与实现》必读目录
			
目录 目录 关于这本书 必看知识点 最后 关于这本书 <Openstack 设计与实现>是一本非常值得推荐的书,为数不多的 Openstack 开发向中文书籍中的精品.如果希望从事 Ope ...
 - windows mysql官方绿色版zip包安装教程
			
环境: 系统环境 Windows 10 64位 mysql版本 5.7.19 一.万变不离的下载 下载页面:https://dev.mysql.com/downloads/mysql/ 点击 Down ...
 - Python web自动化测试框架搭建(功能&接口)——unittest介绍
			
Python UnitTest测试框架介绍 1) TestCase:所有测试用例类继承的基本类, TestCase的实例就是测试用例 2) TestSuite:测试套件 ...
 - Bootstrap 学习笔记6 列表组面板嵌入组件
			
列表组组件: 面板组件:
 - LeetCode 144. Binary Tree Preorder Traversal 动态演示
			
先序遍历的非递归办法,还是要用到一个stack class Solution { public: vector<int> preorderTraversal(TreeNode* root) ...