博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Trapping Rain Water
阅读量:5086 次
发布时间:2019-06-13

本文共 985 字,大约阅读时间需要 3 分钟。

问题:给定一个由非负整数组成的数组,数组元素代表柱体高度,求该数组所代表的这些柱体能容纳的水的体积

示例:

输入:[0,1,0,2,1,0,1,3,2,1,2,1]

输出:6

解决思路:遍历数组,使用变量保存当前最大值和位置。如果遍历到的元素不小于该值,(并且且如果两者位置间隔超过1,则计算两者之间可容纳的水的体积),则需要将当前最大值和位置替换掉;如果小于该值,则用另一变量保存需要去除的水底的体积

Python代码:

class Solution(object):    def trap(self, height):        """        :type height: List[int]        :rtype: int        """        self.area = 0        length = len(height)        l_index = self.cal_lr(0,length,1,height)        self.cal_lr(length-1,l_index-1,-1,height)        return self.area        def cal_lr(self,s,e,interval,height):        m_index,m_height,drown = s,0,0        for i in range(s,e,interval):            if height[i] >= m_height:                if abs(i-m_index) > 1:                    self.area += (abs(i-m_index)-1)*m_height-drown                    drown = 0                m_index = i                m_height = height[i]            else:                drown += height[i]        return m_index

 

转载于:https://www.cnblogs.com/wenqinchao/p/10830806.html

你可能感兴趣的文章
LINUX部署SVN服务器
查看>>
Hdu1015&&寒假作业第二组I题
查看>>
51 Nod 1262 扔球
查看>>
Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) C. Bear and Drawing
查看>>
模拟ATM机系统
查看>>
error:no such partition.grub rescue>问题
查看>>
3、Scott用户表的结构分析
查看>>
Java第一次上机课
查看>>
Spring源码解析之常见注解
查看>>
go语言基础之切片的创建和截取
查看>>
UNIX网络编程——原始套接字(dos攻击)
查看>>
Red Hat 7.0 DNS服务配置笔记
查看>>
Spring Boot微服务如何集成fescar解决分布式事务问题?
查看>>
LongListSelector 锁定组头(sticky header )之我的实现
查看>>
利用Node.js轻松创建web服务器
查看>>
程序执行过程理解
查看>>
在Go1.11.1中使用go module管理依赖
查看>>
样式素材网
查看>>
Android中 数据库操作 like 和 limit 的写法
查看>>
Git常用操作详细说明
查看>>