- 双指针思想:面积取决于距离与值小的值乘积,如果大值向内移动,面积一定减小。要求最大的面积,因此值大的指针不动,而值小的指针向内移动遍历。
- 三元操作符:条件表达式 ? 表达式1 : 表达式2;
//时间复杂度O(n),空间复杂度O(1)
//双指针思想
class Solution {
public:
int maxArea(vector<int>& height) {
if(height.size() < 2)
return 0;
int maxSize = 0; //最大值
int left = 0; //左边界
int right = height.size()-1; //右边界
while(left < right)
{
//计算方法
int val = min(height[left],height[right])*(right-left);
if(maxSize < val)
maxSize = val;
//三元计算方法
height[left] < height[right]?left++:right--;
}
return maxSize;
}
};