LeetCode 141 Container With Most Water
2014-11-01 15:16
357 查看
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.
分析,维持两个指针,分别从左右向中间收缩,同时计算装水量,然后更新最大装水量。
可以提高效率的技巧是,
如果收缩过程中,碰到的高度还没有之前的高度高,那么计算出来的装水量一定比之前的小,所以可以直接忽略。
public class Solution {
public int maxArea(int[] height) {
int i, j, lh, rh, area, tmp, len=height.length;
lh=height[0];
rh=height[len-1];
area=0;
i=0;
j=len-1;
while(i<j){
tmp=Math.min(lh,rh)*(j-i);
if(tmp > area)
area = tmp;
if(lh<rh){
while(i<j&&height[i]<=lh)
i++;//高度更小的就不在考虑
if(i<j)
lh=height[i];
}else{
while(i<j&&height[j]<=rh)
j--;
if(i<j)
rh=height[j];
}
}
return area;
}
}
that the container contains the most water.
Note: You may not slant the container.
分析,维持两个指针,分别从左右向中间收缩,同时计算装水量,然后更新最大装水量。
可以提高效率的技巧是,
如果收缩过程中,碰到的高度还没有之前的高度高,那么计算出来的装水量一定比之前的小,所以可以直接忽略。
public class Solution {
public int maxArea(int[] height) {
int i, j, lh, rh, area, tmp, len=height.length;
lh=height[0];
rh=height[len-1];
area=0;
i=0;
j=len-1;
while(i<j){
tmp=Math.min(lh,rh)*(j-i);
if(tmp > area)
area = tmp;
if(lh<rh){
while(i<j&&height[i]<=lh)
i++;//高度更小的就不在考虑
if(i<j)
lh=height[i];
}else{
while(i<j&&height[j]<=rh)
j--;
if(i<j)
rh=height[j];
}
}
return area;
}
}
相关文章推荐
- Container With Most Water——LeetCode
- LeetCode_11---Container With Most Water
- leetcode 第11题 Container With Most Water
- Leetcode Container With Most Water
- leetcode Container With Most Water python
- Leetcode/array/Container With Most Water
- LeetCode_11_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-- Container With Most Water
- LeetCode-Container With Most Water
- leetcode之11. Container With Most Water(C++解法)
- leetcode——Container With Most Water
- LeetCode(11)——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