Container With Most Water
来源:互联网 发布:易华录数据湖 编辑:程序博客网 时间:2024/06/07 17:29
题目原型:
Given n non-negative integers a 1 , a 2 , ..., a n , where each represents a point at coordinate ( i , a i ). n vertical lines are drawn such that the two endpoints of line i is at ( i , a i ) 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.
基本思路:
首先,我们假设找到了最大的容积S,即由ai,aj和x轴围成,那么我们想一下,此时如果i的左边有比ai大的数,那么此时最大面积就不可能是S了(因为x轴的长度增加了,而高度最少是保证很原来相等的,当增加的是较长的边不影响高度,这是由短板理论决定的。),同理,j的右边也是如此。此时,我们得出了一个结论,当出现最大面积时,i的左边和j的右边的高度都比ai和aj小。
那么,现在考虑i和j的中间,当中间有比ai和aj大的数时,有可能出现比S更大的容积,因为尽管x轴减小了,当高度补齐了它的不足。所以,我们从两头向中间靠拢,同时更新候选值;在收缩区间的时候优先从 x, y中较小的边开始收缩(这点很重要,若是从较大的开始收缩会越来越小)。
public class Solution {
public int maxArea(int[] height) {
int l = 0;
int r = height.length-1;
int MaxArea = 0;
while(l<r){
int Area = Math.min(height[l],height[r])*(r-l);
MaxArea = Math.max(MaxArea,Area);
if(height[l]<height[r]){
l++;
}else{
r--;
}
}
return MaxArea;
}
}
- Container With Most Water
- Container with most water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Container With Most Water
- Unity小技巧
- android socket 实现心跳包
- python urllib获取带有中文参数url内容的方法
- 减少 vm占用的磁盘空间
- AdaptiveThreshold
- Container With Most Water
- 文章收集!
- PHP TP模板下的QQ登录(PC)
- Mb(全称为Mbps)与MB(Mbytes)的区别
- 怎么解决android开发的百度地图的签名问题
- 基于live555的rtsp封装rtspperf的客户端源码解析
- 34.Search for a Range LeetCode Java版代码
- LeetCode283. Move Zeroes
- 超图 获取空间所有集合