原题链接:11. Container With Most Water
【思路】
用两枚指针——left, right 分别从左和右向中间遍历(left 和 right 中高度较小的向中间靠齐)。在遍历过程中遇到更大的高度时,由于可能得到更大面积,因此要和原先面积做一次比较:
public class Solution {
public int maxArea(int[] height) {
int l = 0, r = height.length - 1, res=0;
while(l < r)
res = Math.max(res, (r-l) * (height[l] < height[r] ? height[l++] : height[r--]));
return res;
}
}
45 / 45
test cases passed. Runtime: 4 ms Your runtime beats 73.09% of javasubmissions.
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""
l, r, mArea = 0, len(height)-1, 0
while l < r :
if height[l] < height[r] :
mArea, l = max(mArea, (r-l)*height[l]), l+1
else :
mArea, r = max(mArea, (r-l)*height[r]), r-1
return mArea
45 / 45
test cases passed. Runtime: 84 ms Your runtime beats 71.06% of pythonsubmissions.