题目描述
[leetcode11]https://leetcode.com/problems/container-with-most-water/
方法一
两层循环可以解决
方法二:
算法步骤:
- 两头指针left和right,往内部走,哪个小走那个走的过程注意更新最大面积
算法原理
7,,,,9
比如上面情况,假如现在中间距离是6,那么此时可知有一个面积为67=42,那么之后咋办?当然是left向右边走,因为假如你right--,那么之后算的的值一定会被7限制,这些面积一定小于42,是没有意义的。有意义的是比如说7,10,,,,9,left往后走一个之后面积变为510>42。
代码
public int maxArea(int[] height) {
int left=0;
int right=height.length-1;
int maxArea=0;
int tmpArea;
while(left<right){
tmpArea=(right-left)*Math.min(height[left],height[right]);
if(tmpArea>maxArea)
maxArea=tmpArea;
if(height[left]<height[right])
left++;
else
right--;
}
return maxArea;
}
网友评论