leetcode 算法 11. 盛最多水的容器
class Solution {
public int maxArea(int[] height) {
int n = height.length;
int i =0;
int j =n-1;
int max = 0;
while(i<j){
max = Math.max(Math.min(height[i],height[j]) * (j-i),max);
if(height[i] >= height[j]){
j--;
}else {
i++;
}
}
return max;
}
}
思路:
容量 = Math.min(h2,h1) * (i2 - i1) ,受制于较短的边和之间的距离
初始值 i1 = 0 , i2 = n -1,任意一边的移动都会使距离减少;求最大容量,则需要 距离减少后,高度增加 => 需要较短的一边移动,高度才有可能增加