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.
使用贪心策略,当hi<hj时i++ else时 j--
因为若hi<hj 则面积Area= hi*(hj-i) 若移动j则新面积Area'=min(hi,hj')(j'-i) Area'<Area故应i++
class Solution { public: int maxArea(vector<int> &height) { // Start typing your C/C++ solution below // DO NOT write int main() function int i=0; int j=height.size()-1; int max=0; while(i<j){ int area=min(height[i],height[j])*(j-i); if(area>max)max=area; if(height[i]<height[j])i++; else j--; } return max; } };