贪心、双指针
思维有点跳跃,思维题
两边开始的双指针,无需找到特定解,记录并比较每一次结果即得出答案:双指针往中间移动(两个指针中较低的往中间移动),每次计算面积,保留最大值即为所求
class Solution {
public:
int maxArea(vector<int>& height) {
int res = 0;//存储面积值
for(int i = 0, j = height.size()-1; i<j; ){//两个指针从两边往中间走
res = max(res, min(height[i], height[j])*(j-i));//计算面积并更新
if(height[i] > height[j])
j--;// 如果左指针指向的高度大于右指针指向的高度,移动右指针向左
else i++;// 否则,移动左指针向右
}
return res;
}
};