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.
Note: You may not slant the container.
从两边向中间考虑时,乘水的面积是由(两端较小的高度)×(两个板之间的宽度)决定的。记录最开始的乘水面积为ans1,然后L向右运动,R向左运动,截止条件是L
>= R,并且记录乘水的面积ans,取最大值
以L向左运动为例,当宽度减小时,如果面积变大,必然高度要增加,因此L只需取比前一个L大的值即可,初始L的高度为L1。R向右运动同理
public class Solution {
public int maxArea(int[] height) {
if(height.length<2)
return 0;
int re=0;
int j=height.length-1;
int i=0;
while(j>i){
if(height[i]>=height[j]){
int area = height[j]*(j-i);
if(area>re)
re=area;
j--;
continue;
}else{
int area=height[i]*(j-i);
if(area>re)
re=area;
i++;
continue;
}
}
return re;}
}
【LeetCode】Container With Most Water,布布扣,bubuko.com
时间: 2024-08-09 02:20:26