力扣盛最多水的容器
給你 n 個非負整數 a1,a2,…,an,每個數代表坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0) 。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。
代碼思路:
 碰撞指針,每次將短板移動,存儲面積最大值
為什么將短板移動?
 面積:短板的長度*短板與長板的距離
 判斷容積的時候,因為只有短板才有影響,所以移動指針應該移動短板,因為移動長板時,有:
 如果長板變得比短板還短,那么容積顯然減少。
如果長板變得比短板長或相等,因為短板依舊未變。但距離減少,所以容積依舊減少。
但是如果你移動短板的話,就會有容積增大的可能。
class Solution {public int maxArea(int[] height) {int left = 0;int right = height.length-1;int water = (right-left)*(Math.min(height[left],height[right]));//計算最初的面積while(left<right){if(height[left]<height[right]){//尋找短板left++;}else{right--;}water = Math.max(water,(right-left)*(Math.min(height[left],height[right])));//存儲較大的面積}return water;}}1.Math.max(x1,x2);返回兩數中較大的
2.Math.min(x1,x2);返回兩數中較小的
總結
 
                            
                        - 上一篇: 安阳看输卵管粘连最好的医院推荐
- 下一篇: “流年抱衰疾”下一句是什么
