leetcode之Container With Most Water 和Trapping Rain Water
来源:互联网 发布:红色 知乎 编辑:程序博客网 时间:2024/06/15 21:07
Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container.
分析参考这里,作者讲解的很详细
class Solution {public: int maxArea(vector<int> &height) { int left = 0,right = height.size()-1,area = 0; while(left < right) { area = max(area,min(height[left],height[right])*(right-left));//当前位置的面积 if(height[left] < height[right]) { int k = left; while(k < right && height[k] <= height[left])++k;//找下一个位置 left = k; } else { int k = right; while(k > left && height[k] <= height[right])--k;//找下一个位置 right = k; } } return area; }};
Trapping Rain Water
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!
思路见这里,作者讲解的很详细
class Solution {public: int trap(int A[], int n) { vector<int> leftMostHeight(n,0),rightMostHeight(n,0); int mostHeiht = 0,i,area = 0; for(i = 0;i < n;++i) { leftMostHeight[i] = mostHeiht;//左边的最大高度 mostHeiht = max(mostHeiht,A[i]); } mostHeiht = 0; for(i = n-1;i >= 0;--i) { rightMostHeight[i] = mostHeiht;//右边的最大高度 mostHeiht = max(mostHeiht,A[i]); } for(i = 0;i < n;++i) { int a = min(leftMostHeight[i],rightMostHeight[i]) - A[i];//当前高度的蓄水量 if(a > 0)area += a; } return area; }};
另外还有两个相似的题目,都是和直方图相关的,具体看这里
- leetcode之Container With Most Water 和Trapping Rain Water
- [LeetCode]Container With Most Water、Trapping Rain Water
- 数组——container-with-most-water和trapping-rain-water
- 42. Trapping Rain Water 及类似题目 407. Trapping Rain Water II 11. Container With Most Water
- LeetCode42/11 Trapping Rain Water/Container With Most Water/Hist area**
- LeetCode之Container With Most Water
- leetcode之Container With Most Water
- LeetCode之Container With Most Water
- 【Leetcode】之Container With Most Water
- LeetCode 之 Container With Most Water
- LeetCode之11---Container With Most Water
- Leetcode之Container With Most Water 问题
- LeetCode 之 Container With Most Water
- leetcode之Trapping Rain Water
- leetcode之Trapping Rain Water
- LeetCode之Trapping Rain Water
- Leetcode之Trapping Rain Water
- 【Leetcode】之Trapping Rain Water
- Fiddler 教程
- hdu 1532 Drainage Ditches(网络流dinic模板)
- Nivoslider:丰富的图片切换效果
- Tomcat启动时,spring加载配置文件applicationContext.xml出错,抛出nested exception is og.xml.sax.SAXParseException
- poj 2498 StuPId
- leetcode之Container With Most Water 和Trapping Rain Water
- POJ 2195 Going Home
- logback 常用配置详解(方便以后查阅)
- 在jenkins中解决svn目录中有中文的问题
- 帮助写贝塞尔曲线控制点代码的神器
- tomcat SSL配置异常-“No Certificate file specified or invalid file format”
- 银行调度系统
- java设计模式学习(五):命令模式
- Lua学习笔记 第七章 迭代器与泛型for