11. Container With Most Water

1.問題

2.想法

  • 提問

  • function header, parameter

  • test input

    • zero vector

  • 說明想法

    • 暴力解: 雙重迴圈

    • 優化解

      • 其實面積是左右兩邊, 可以設定為比較左右兩邊的長度, 誰比較短則往前進一格

  • 測試計算複雜度: O(n)?

3.程式碼

class Solution {
public:
    int maxArea(vector<int>& height) {
        int size = height.size() - 1, r = 0, l = size, maxSize = min(height[r], height[l]) * size;
        
        while (r < l) {
            if (height[r] < height[l]) {
                r++;
            } else {
                l--;
            }
            
            int currSize = min(height[r], height[l]) * (l - r);
            maxSize = max(maxSize, currSize);
        }
        
        
        return maxSize;
    }
};


Last updated