解题思路:(感觉用到了贪心)
双指针思想,首先计算当前面积,然后更新最大容量。移动指针的条件就是当左边高度小于右边了就左指针向右移 反之右指针向左移。(因为我们想尝试找到更高的线段以可能增加容量。)
-
移动指针:
-
比较两指针所指的高度:
-
如果左侧高度 height[i] 小于右侧高度 height[j],移动左指针 i++,因为我们想尝试找到更高的线段以可能增加容量。
-
如果右侧高度 height[j] 小于或等于左侧高度,移动右指针 j--。
class Solution { public: int maxArea(vector<int>& height) { int i = 0,j = height.size()-1; int sum = 0,count=0; while(i<j){ count = min(height[i],height[j]) * (j-i); sum = max(sum,count); if(height[i]>height[j]){ j--; } else i++; } return sum; } };
-
-