今天刷“盛最多水的容器”,是中等难度题目,乍一看有点唬人的,大家有兴趣可以点上看看题目要求,试着做一下。
我们直接看题解吧:
思路:用双指针,定义le和ri两个指针,分别从0和height.length-1往中间遍历,取元素较小与指针距离相乘,并比较面积较大者,其中le和ri两个指针的移动取决于数字较小一方。
注意:java中min 与 max函数需前缀math.
双指针各往中间的循环条件是重合为止即(le<ri)
代码(java):
public class Solution {
public int maxArea(int[] height) {
int l = 0, r = height.length - 1;
int ans = 0;
while (l < r) {
int area = Math.min(height[l], height[r]) * (r - l);
ans = Math.max(ans, area);
if (height[l] <= height[r]) {
++l;
}
else {
--r;
}
}
return ans;
}
}