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.
1. Two pointer scan with greedy.
public class Solution { public int maxArea(int[] height) { int len = height.length; if(0 == len) return 0; int res = -1; int i = 0; int j = len-1; while(i < j){ int hI = height[i]; int hJ = height[j]; int water = Math.min(hI, hJ)*(j - i); if(water > res){ res = water; } if(hI < hJ){ i++; }else{ j--; } } return res; } }
No comments:
Post a Comment