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

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

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

For example,

Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.

思路:显然index = 0 and size - 1 这两个位置不会存水。只需要考察这中间的位置。如果一个位置 index (e.g. 2), 左边和右边都有比它大的数,index上面才可能有水。写一个subroutine来找左(右)边第一个高于index的位置,并记录下这个高度为 LH, RH。存水会使LHI, RHI之间的所有位置高度都变成min(RH, LH)。然后我们跳到 RHI这个位置接着再找就可以。

1 class Solution(object): 2     def trap(self, height): 3         """ 4         :type height: List[int] 5         :rtype: int 6         """ 7         size = len(height) 8         S1 = sum(height) 9         if size <= 2:10             return 011         i = 112         while i <= size -1:13             [RHI, RH] = self.firstHigher(height, i, True)14             [LHI, LH] = self.firstHigher(height, i,False)15             if RHI>i and RHI > LHI+1:16                 for k in range(LHI+1, RHI):17                     height[k] = min(RH, LH)18                 i = RHI19             else:20                 i += 121             22         return sum(height) - S123              24     def firstHigher(self, height, index, right):25         size = len(height)26         if right == True:27             for j in range(index+1,size):28                 if height[j] > height[index]:29                     return [j, height[j]]30                 else:31                     continue32         else:33             for j in range(index-1, -1, -1):34                 if height[j] > height[index]:35                     return [j, height[j]]36                 else:37                     continue38         return [index, height[index]]39     40

 

转载于:https://www.cnblogs.com/lettuan/p/6477923.html

你可能感兴趣的文章
第二阶段冲刺第八天
查看>>
数学小记
查看>>
【BZOJ4197】【Noi2015】寿司晚宴
查看>>
如何解决:登录桌面时自动运行的EXE提示“该程序没有与之关联来执行操作”,之后出现蓝屏代码0xc000021a...
查看>>
vue history 模式打包部署在域名的二级目录的配置指南
查看>>
读《深入理解Elasticsearch》点滴-改善查询相关性
查看>>
RabbitMQ 使用(一)
查看>>
强大的PHP压缩与解压缩zip类
查看>>
[DELPHI]$2501錯誤處理
查看>>
c#小数取整
查看>>
Margin和padding失效
查看>>
cdcq的独立博客上线辣!-> http://cdcq.coding.me/blog/
查看>>
MySQL性能调优与架构设计——第13章 可扩展性设计之 MySQL Replication
查看>>
SqlServer体系结构
查看>>
jquery学习--选择器
查看>>
简析TCP的三次握手与四次断开
查看>>
R语言 多元线性回归分析
查看>>
Linux操作系统-命令-aptitude install unzip
查看>>
数字的可视化:python画图之散点图sactter函数详解
查看>>
R语言For循环
查看>>