题目:
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 the line i is at (i, ai) and (i, 0). Find two lines, which, together with the x-axis forms a container, such that the container contains the most water.
这道题要求求出最大的面积,我个人的做法就是从两边往中间求,比较边界值,小的一边往就往中间移动一步就行,总的算法就是O(n).
class Solution {
public:
int maxArea(vector<int>& height) {
int max = 0;
int start = 0, end = height.size() - 1;
while(start < end){
int area = std::min(height[start], height[end]) * (end - start);
if(max < area)
max = area;
if(height[start] > height[end])
end--;
else
start++;
}
return max;
}
};