训练题:盛最多水的容器
- 时间复杂度:O(n)
- 空间复杂度:O(1)
从两端往中间靠拢,每次移动高度更小的那个。
int maxArea(vector<int>& height) {
if( height.size() < 2 ) { return 0; }
int maxProduct = -1;
const int size = height.size();
for( int left = 0,right = size-1; right > left; )
{
maxProduct = std::max( ( right - left ) * std::min( height[left], height[right] ), maxProduct );
if( height[left] < height[right] ) {
++left;
}
else {
--right;
}
}
return maxProduct;
}