左右指针+贪心
初始时候两指针指向两端,V = l * h,向内更新答案,每次向内走一个单位即l –,可以肯定的是l是确定值,因此想要使V取大值就应该使h增大,所以对于左右两个指针比较h[l],h[r], 使小的指针向内移动,并更新答案即可
class Solution {
public int maxArea(int[] height) {
int l = 0, r = height.length - 1;
int ans = Math.min(height[l], height[r]) * r;
while (l < r) {
if (height[l] < height[r]) l++;
else r--;
ans = Math.max(ans, Math.min(height[l], height[r]) * (r - l));
}
return ans;
}
}