问题来源和描述
LeetCode 11.盛最多水的容器
思路
双指针,左边指针初始指向最左边,右侧指针初始指向最右边,得到的容器的容量=min(左边指针指向的数字,右边指针指向的数字) * (右边指针位置-左边指针位置)。每次短的一侧往另一个指针的方向移动,直到两个指针相等。
class Solution {
public int maxArea(int[] height) {
int res = 0;
int left = 0;
int right = height.length-1;
while (left < right) {
int temp = Math.min(height[left], height[right]) * (right-left);
res = Math.max(res, temp);
if (height[left] < height[right]) {
left++;
} else if (height[left] > height[right]) {
right--;
} else {
left++;
right--;
}
}
return res;
}
}