使用双指针算法(我不理解,但是为了做对题目,我就记录下来^_^)
思路是:
(1)两个指针分别指向头的位置和尾部位置。
(2)如果指针指向的两个数字,哪一个数字小,就移动哪一个指针。不断记录最大的面积。
我们发动脑筋想一想,因为不断的从两边向中间移动,中间不会丢掉最大数字的。
class Solution {
public int maxArea(int[] height) {
int i = 0, j = height.length - 1, res = 0;
while(i < j) {
res = height[i] < height[j] ?
Math.max(res, (j - i) * height[i++]):
Math.max(res, (j - i) * height[j--]);
}
return res;
}
}
下面是代码地址连接