11 Container With Most Water
Given n non-negative integers a1,a2, ...,an, where each represents a point at coordinate (i,ai).nvertical lines are drawn such that the two endpoints of lineiis 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 and n is at least 2.
通过两个指针从两边开始往中间靠,每次算一个容量,边算边更新最大值。注意width是right - left,不用加一。
public int maxArea(int[] height) {
if (height == null || height.length == 0) {
return 0;
}
int left = 0;
int right = height.length - 1;
int max = 0;
while (left < right) {
int w = right - left;
int h = Math.min(height[left], height[right]);
int area = h * w;
max = Math.max(area, max);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return max;
}
Last updated
Was this helpful?