首页 > 代码库 > [LeetCode]Container With Most Water

[LeetCode]Container With Most Water

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container.


从两端开始计算,就是求由两条线和X轴组成的最大图形,可以盛水的最大值(由线得最小值和宽度的乘积决定)

class Solution {
public:
    int maxArea(vector<int> &height) {
    int ans = 0;
	int leftPos, rightPos;
	leftPos = 0;
	rightPos = height.size() - 1;
	while(leftPos < rightPos)
	{
		ans = max(ans, min(height[leftPos], height[rightPos]) * (rightPos - leftPos));
		if (height[leftPos] < height[rightPos])
		{
			leftPos++;
		}
		else
		{
			rightPos--;
		}
	}
	return ans;
    }
};