Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) 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.
题意:数组[a1, a2, ..., an]代表板子的高度,求两块板子,使得所能盛水的量最多;
思路:贪心算法
两条边往中间移动,搜索最大装水量。每次都是较短的边往中间移。
class Solution {
public:
int maxArea(vector<int>& height) {
int left = 0;
int right = height.size()-1;
int max = 0;
while (left < right){
const int size = (right - left)min(height[left],height[right] );
max = size > max ? size : max;
if (height[left] > height[right])
right--;
else
left++;
}
return max;
}
};