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++])的顺序不要反了,是先获取值还是先 - -(或者++)的问题。

这篇博客探讨了两种解决求解二维数组中最大矩形面积问题的方法:暴力解法和双指针法。暴力解法使用两层循环遍历所有可能的矩形,而双指针法则通过从数组两端开始向中间遍历,动态调整边界以找到最大面积。两种方法在效率上有显著差异,双指针法更优,减少了不必要的计算。博客重点讨论了解题思路和代码实现细节,强调了在使用双指针法时计算面积的顺序和更新最大值的技巧。
552

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



