public class Solution {
public int maxArea(int[] height) {
int maxarea = 0, l = 0, r = height.length - 1;
while (l < r) {
maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));
if (height[l] < height[r])
l++;
else
r--;
}
return maxarea;
}
}
官方雙指針法如上,觀畢。寫一點自己理解。
雙指針法是從,從最大寬度開始,不斷縮減,以寬度的減少試圖獲取短板的提高從而試探出更大的總面積,直到所有的垂直直線均被檢測過一次爲止,也就是寬度已經不能再減少了。此時存儲在緩存最大面積裏的值便是最大面積。