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.
[解题思路]
双指针的变型,可以实现O(n),别的没什么好说的。
code:
public class ContainerWithMostWater {
public int maxArea(int[] height) {
int size = height.length;
if(size == 0){
return -1;
}
int i = 0, j = size - 1, v = 0;
while(i < j){
int temp = (j - i) * Math.min(height[i], height[j]);
v = Math.max(v, temp);
if(height[i] < height[j]){
i++;
}
else if(height[i] > height[j]){
j--;
}
else{
i++;
j--;
}
}
return v;
}
}
No comments:
Post a Comment