您的位置:首页 > 大数据 > 人工智能

leetcode 11. Container With Most Water-最大容器|双指针

2016-06-01 21:31 615 查看
原题链接: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 mArea45 / 45 test
cases passed. Runtime: 84
ms  Your runtime beats 71.06% of pythonsubmissions.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java leetcode Python