题目:
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 left = 0, right = height.length - 1;
int leftWall = height[left];
int rightWall = height[right];
int ret = 0;
while (left < right) {
ret = Math.max(ret, (right - left)
* (Math.min(leftWall, rightWall)));
if(leftWall < rightWall){
left++;
leftWall = height[left];
} else {
right--;
rightWall = height[right];
}
}
return ret;
}
}