給你 n 個非負整數 a1,a2,...,an,每個數代表座標中的乙個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器,且 n 的值至少為 2。
示例:
輸入:[1,8,6,2,5,4,8,3,7]
輸出:49
暴力求解。使用兩層迴圈求面積並記錄當前的最大值,**如下:
class solution }}
return area;}};
雙指標法。兩條垂直線圍成的面積取決於兩條垂直線之間的距離以及較短的那條垂直線的長度。首先,使用兩個指標left、right分別指向第一條垂直線和最後一條垂直線使得距離最大,然後移動較短的那條垂直線,因為移動較短的那條線可能會遇到更長的線,雖然兩條線之間的距離變短了,但是由於短的那條垂直線的長度增加了,所以還有有可能獲得更大的面積的。重複這個過程直至left>=right。**如下:
class solution
int maxarea = -1;
int left = 0;
int right = height.size()-1;
while(left
}return maxarea;}};
LeetCode 盛最多水的容器
題目 給定 n 個非負整數 a 1,a2,a n,每個數代表座標中的乙個點 i,ai 畫 n 條垂直線,使得垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。思路 定義兩個指標,分別指向list的頭和尾,對應容器的左壁和右壁。隨後...
LeetCode 盛最多水的容器
給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。圖中垂直線代表輸入陣列 1,8,...
LeetCode 盛最多水的容器
給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別 為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。示例 輸入 1,8,6,2,5...