Problem
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.
Code
int maxArea(vector<int> &height) { // Note: The Solution object is instantiated only once and is reused by each test case. int n = height.size(); int i = 0,j = n - 1; int max_a = 0; while(i < j){ int area = min(height[i],height[j])*(j - i); if(max_a < area) max_a = area; if(height[i] < height[j]) ++i; else if(height[i] > height[j]) --j; else{ ++i; --j; } } return max_a; }
No comments:
Post a Comment