双指针
1. 计算当前左右指针所夹面积
2. 如果lH <= rH,
移动左指针,直到指针所指的高度比之前lH高 (宽变短了, 所以高必须变高才可能面积更大)
3. 如果lH > rH同理。
移动右指针,直到指针所指的高度比之前rH高
import java.util.*;
public class Solution {
public int maxArea (int[] height) {
if (height.length < 2) return 0;
int l = 0, r = height.length-1;
int maxV = 0;
while (l < r) {
int lH = height[l], rH = height[r];
int curV = Math.min(lH, rH) * (r-l);
maxV = Math.max(maxV, curV);
if (lH <= rH) {
// find next higher left bar
while (l < r && height[l] <= lH) {
l++;
}
} else {
// find next higher right bar
while (l < r && height[r] <= rH) {
r--;
}
}
}
return maxV;
}
}