本题使用一个对撞双指针指向首尾两端,求出包围的面积,然后判断左右指针指向数的大小,哪边小,指针就向中间移动最终用一个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;
}
}
我没想到这题我用了十分钟首次就解出来了,果然还是要先把思路写纸上更容易想到答案!