Topic:
Given n non-negative integers a1, A2, ..., an, where each represents a point at coordinate (I, AI). n vertical lines is drawn such, the and the other endpoints of line I am at (i, AI) and (i, 0). Find lines, which together with X-axis forms a container, such that the container contains the most water.
Note:you may not slant the container.
Thinking Analysis:
The given array a[], the line ((I, 0), (i, a[i])), ((j, 0), (j, A[j])) and the x-axis of the bulk weight of the maximum amount of water can be loaded. The amount of water to be filled is determined by ABS (I-J) and Min (A[i], a[j). The larger the product, the more water can be installed.
So we first let ABS (I-J) take the maximum value, through the left and right two pointers, gradually moving, gradually adjust min (a[i], a[j]) and ABS (I-J) to get the maximum.
C + + Reference code:
classsolution{ Public:intMaxarea ( vector<int>& height) {intCount =int(Height.size ());if(Count = =0)return 0;intleft =0;intright = count-1;intMaxarea =0;//Maximum area intCurarea =0;//Current area while(Right > left) {curarea = min (Height[left], height[right]) * (right-left);if(Curarea > Maxarea) maxarea = Curarea;if(Height[left] > Height[right])--right;Else++left; }returnMaxarea; }};
Leetcode:container with most water