1、暴力解法:
var maxArea = function(height) {
let max = 0;
for(let i=0;i<height.length;i++){
for(let j=height.length-1;j>i;j--){
let area = height[i]>height[j]?height[j]*(j-i):height[i]*(j-i)
max = area>max?area:max
}
}
return max
};
解题思路:利用双for循环,i从前向后,j从后向前,直到i==j的时候结束,分别得到盛水面积,取最大值;
2、利用双指针(学习大佬们的解法):
var maxArea = function(height) {
let max = 0;
let i=0;
let j=height.length-1;
while(i<j){
let area = height[i]>height[j]?(j-i)*height[j--]:(j-i)*height[i++]
max = area>max?area:max;
}
return max
};
解题思路:还是分别从队首和队尾分别向中间出发,得到之间的面积,然后哪边高就移动另一边,得到最大面积;
注意:获取面积时,j-i和height[j- -](或者height[i++])的顺序不要反了,是先获取值还是先 - -(或者++)的问题。