LeetCode第11题:盛最多水的容器
这道题看似复杂,其实很简单,首先相同高度肯定是距离越远容量越大,所以可以直接两个指针分表从两端开始计算容量,然后将高度低的一端指针向内移动,移动到两个指针相差为一,获取其中最大值即可。这里关键点就是每次都移动高度低的一端的指针。
public static int maxArea(int[] height) {
int ans = 0;
int left = 0;
int right = height.length - 1;
while (left < right) {
int area;
// 这里每次移动高度低的一端的指针
if (height[left] < height[right]) {
area = height[left] * (right - left);
left++;
} else {
area = height[right] * (right - left);
right--;
}
ans = ans > area ? ans : area;
}
return ans;
}