LeetCode_11_盛水最多的容器
阿新 • • 發佈:2020-07-27
題目
給你 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
思路
雙指標
i 指向開始,j 指向結尾下標。每次計算當前兩個高度可裝的最大體積,與全域性最大體積進行比較。
1 public int maxArea(int[] height) { 2 int max = Integer.MIN_VALUE;3 4 int i=0; 5 int j=height.length-1; 6 7 while (i<j) { 8 9 int tempMin = Math.min(height[i], height[j]); 10 max = Math.max(max, tempMin * (j-i)); 11 if(height[i] < height[j]) i++; 12 elsej--; 13 } 14 15 16 17 return max; 18 }