11.盛最多水的容器(Container With Most Water)
题目描述 给定n个正整数 a1,a2,...,an,其中每个整数用坐标(i,ai)表示。连接点(i,ai)和(i,0)画出直线i,总共有n条线。请找出其中两条直线,使得它们与x轴形成的容器能够装的水最多。注意:n>=2解题思路分析 1.定义两个指针,left和right,初始时,指向首部和尾部; 2.计算两个指针之间的面积area1 = min(heigh
·
题目描述
给定n个正整数 a1,a2,...,an,其中每个整数用坐标(i,ai)表示。连接点(i,ai)和(i,0)画出直线i,总共有n条线。请找出其中两条直线,使得它们与x轴形成的容器能够装的水最多。
注意:n>=2
解题思路分析
1.定义两个指针,left和right,初始时,指向首部和尾部;
2.计算两个指针之间的面积area1 = min(height[left],height[right])*(right-left);
3.maxArea = Max(maxArea,area1);
4.height[left]和height[right],谁小谁往里面走;
public int maxArea(int[] height) {
int left = 0, right = height.length - 1; //首尾指针
int maxArea = 0; //最大的面积,最后的结果
while (left < right) {
maxArea = Math.max(maxArea, //注意这里
Math.min(height[left], height[right])*(right - left) );
if (height[left] < height[right])
left++;
else
right--;
}
return maxArea;
}
更多推荐
已为社区贡献3条内容
所有评论(0)