11 Container With Most Water
1. Question
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 andnis at least 2.
2. Implementation
(1) Two Pointers
class Solution {
public int maxArea(int[] height) {
int res = 0;
int start = 0, end = height.length - 1, curHeight = Integer.MAX_VALUE;
while (start < end) {
curHeight = Math.min(height[start], height[end]);
res = Math.max(res, curHeight * (end - start));
if (height[start] <= curHeight) {
++start;
}
else {
--end;
}
}
return res;
}
}
3. Time & Space Complexity
时间复杂度O(n), 空间复杂度O(1)
Last updated
Was this helpful?