
本题使用一个对撞双指针指向首尾两端,求出包围的面积,然后判断左右指针指向数的大小,哪边小,指针就向中间移动最终用一个res接收求出面积的最大值。
class Solution {
public int maxArea(int[] height) {
int res = 0, l = 0, r = height.length-1, s = 0;
if (height.length == 0) return 0;
while (l < r) {
s = (r - l)*(height[l] > height[r] ? height[r] : height[l]);
res = res > s ? res : s;
if (height[l] < height[r]) {
l ++;
}else {
r --;
}
}
return res;
}
}
我没想到这题我用了十分钟首次就解出来了,果然还是要先把思路写纸上更容易想到答案!
本文介绍了一种解决盛最多水的容器问题的高效算法。通过使用对撞双指针技术,从两端开始向中间逼近,根据高度较低的一侧调整指针位置,最终找到能容纳最大水量的方案。
1173

被折叠的 条评论
为什么被折叠?



