class Solution {
public int maxArea(int[] height) {
int left = 0;
int right = height.length - 1;
int area = 0;
while(left < right){
area = Math.max(area, (right-left)*Math.min(height[left], height[right]));
if(height[left] > height[right]){
right--;//面积取决于较小的边,移动较小的边面积才可能增大
}
else if(height[left] < height[right]){
left++;
}
else{
right--;
left++;//单独移动right或left都会使面积减小,同时移动可能增大
}
}
return area;
}
}
归纳:
双指针,左右两边各一个
该博客介绍了一种使用双指针求解数组中由给定高度线段形成的最大矩形面积的方法。通过维护左右两个指针,动态调整以找到最大面积。在面积取决于较短边的情况下,移动指针以可能增大面积。
725

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



