LeetCode 11. 盛最多水的容器
阿新 • • 發佈:2019-02-11
題目描述
思路
理解
木桶效應:一隻木桶能盛多少水,並不取決於最長的那塊木板,而是取決於最短的那塊木板
顯然,這道題也是如此:
我們需要選擇兩塊相對長度較長的木板(縱座標的大小):height[i], height[j]
,同時兩塊木板的間隔也要足夠大j-i
,則此時能裝的水為:min(height[i], height[j]) * (j - i)
思路
我們需要一個變數max_area
來儲存能裝的水體積最大值,用兩個指標(下標i
和j
)分別遍歷
程式碼
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;
}