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

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

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.

The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

本题利用短板效应,从两端开始,依此寻找最短边所能存储到的最多的水,然后更新最短边。例如left height=1,right height=2,然后从左侧寻找,height=2,left height=2,water+=1。时间:8ms。代码如下:

class Solution {public:    int trap(vector
& height) { if (height.empty() || height.size() == 1) return 0; int left = 0, right = height.size() - 1; int water = 0; while (left < right){ if (height[left] < height[right]){ int i = left + 1; while (i < right && height[i] < height[left]) water += height[left] - height[i++]; left = i; } else{ int i = right - 1; while (i > left && height[i] < height[right]) water+=height[right] - height[i--]; right = i; } } return water; }};

 

转载于:https://www.cnblogs.com/Scorpio989/p/4583714.html

你可能感兴趣的文章
Round Numbers
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Varish 缓存
查看>>
Jbpm5.4实例在JBoss中运行、及H2数据库迁移oracle数据库
查看>>
各个平台的mysql重启命令
查看>>
统计单词,字符,和行
查看>>
蓝牙的几种应用层协议作用
查看>>
《Akka应用模式:分布式应用程序设计实践指南》读书笔记8
查看>>
jQuery垂直滑动切换焦点图
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
模运算
查看>>
python多线程的使用
查看>>
团队编程项目作业1-成员简介及分工
查看>>
使用Chrome(PC)调试移动设备上的网页
查看>>
UI基础--手写代码实现汤姆猫动画
查看>>
Python+pytesseract+Tesseract-OCR图片文字识别(只适合新手)
查看>>
使用gitbash来链接mysql
查看>>
docker镜像管理基础
查看>>
黑盒测试和百合测试的优缺点对比
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>