leetcode.11. 盛最多水的容器

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;
    }
}

  官方雙指針法如上,觀畢。寫一點自己理解。

雙指針法是從,從最大寬度開始,不斷縮減,以寬度的減少試圖獲取短板的提高從而試探出更大的總面積,直到所有的垂直直線均被檢測過一次爲止,也就是寬度已經不能再減少了。此時存儲在緩存最大面積裏的值便是最大面積。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章