11. 盛最多水的容器
解题思路
这种能装多少水的问题一般都是用双指针!本题要注意和42.接雨水分开,两种求的并不是同一个东西,所以细节有些不同。但是大体上都是用的双指针。
本题的解题核心思想:面积取决于短板。
①因此即使长板往内移动时遇到更长的板,矩形的面积也不会改变;遇到更短的板时,面积会变小。
②因此想要面积变大,只能让短板往内移动,当然也有可能让面积变得更小,但只有这样才存在让面积变大的可能性
代码
class Solution {
public int maxArea(int[] height) {
int i = 0, j = height.length - 1, res = 0;
while (i < j) {
if (height[i] < height[j]) {
//j - i:下标的差,为长方形的长 height[i] 长方形的高
res = Math.max(res, (j - i) * height[i]);
i++;
} else {
res = Math.max(res, (j - i) * height[j]);
j--;
}
}
return res;
}
}