题目链接:https://leetcode.com/problems/container-with-most-water/description/
文章地址:
项目源码:https://github.com/haha174/daylx
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.
大致的意思如下:
给定n个非负整数a1,a2,...,an,其中每个代表一个点坐标(i,ai)。
n个垂直线段例如线段的两个端点在(i,ai)和(i,0)。
找到两个线段,与x轴形成一个容器,使其包含最多的水。
其实这题我们可以从前后两端开始遍历遍历到 left 和right 相等即可结束,因为当left 超过right 之后会重复,因为是容器,所以取最短的计算最大值,依次的遍历对方的区间。
示例如下:
public int maxArea(int[] height)
{
int left = 0, right = height.length - 1;
int maxArea = 0;
while (left < right && left >= 0 && right <= height.length - 1)
{
maxArea = Math.max(maxArea, Math.min(height[left], height[right]) * (right - left));
if (height[left] > height[right])
{
right--;
}
else
{
left++;
}
}
return maxArea;
}