1. 程式人生 > >LeetCode 11. 盛最多水的容器

LeetCode 11. 盛最多水的容器

題目描述

這裡寫圖片描述

思路

理解

木桶效應:一隻木桶能盛多少水,並不取決於最長的那塊木板,而是取決於最短的那塊木板
顯然,這道題也是如此:
這裡寫圖片描述

我們需要選擇兩塊相對長度較長的木板(縱座標的大小):height[i], height[j],同時兩塊木板的間隔也要足夠大j-i,則此時能裝的水為:min(height[i], height[j]) * (j - i)

思路

我們需要一個變數max_area來儲存能裝的水體積最大值,用兩個指標(下標ij)分別遍歷

程式碼


int getArea(int i_val, int j_val, int
i, int j){ return min(i_val, j_val) * (j - i); } int maxArea(vector<int>& height) { int height_sz = height.size(); int max_area = 0; for (int i = 0; i < height_sz-1; i++){ for (int j = i + 1; j < height_sz; j++){ int curr_area = getArea(height[i], height[j], i, j); if
(curr_area > max_area){ max_area = curr_area; } } } return max_area; }