难度:中等
Java答案:
class Solution {
public int maxArea(int[] height) {
int l=0,r=height.length-1,res=0;
while(l<r){
res=Math.min(height[l],height[r])*(r-l)>res?Math.min(height[l],height[r])*(r-l):res;
if(height[l]>height[r]){
r--;
}else{
l++;
}
}
return res;
}
}
JavaScript答案:
/**
* @param {number[]} height
* @return {number}
*/
var maxArea = function(height) {
var l=0,r=height.length-1,res=0;
while(l<r){
res=Math.min(height[l],height[r])*(r-l)>res?Math.min(height[l],height[r])*(r-l):res;
if(height[l]>height[r]){
r--;
}else{
l++;
}
}
return res;
};
解题思路:
用双指针法
容纳的水量=两指针指向数字中的较小值*指针间的距离
做法就是:每次固定较长的边,短边指针向内移动