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.
利用贪心的思想,从头尾开始遍历,移动较矮的索引。基本原理是,一个索引low,一个索引high。装水的容量是由短板决定的,所以需要移动的是短板。
1 class Solution{ 2 public: 3 int maxArea(vector<int>& height){ 4 int max_area = 0x8fffffff; 5 int low = 0; 6 int high = height.size()-1; 7 while(low<high){ 8 int temp = (high-low)*min(height[low],height[high]); 9 if(max_area<temp) 10 max_area = temp; 11 if(height[low]<height[high]) 12 ++low; 13 else 14 --high; 15 } 16 return max_area; 17 } 18 };