LeetCode Container With Most Water

来源:互联网 发布:java shiro demo 编辑:程序博客网 时间:2024/06/05 04:46

题目:

Given n non-negative integersa1,a2, ...,an, where each represents a point at coordinate (i,ai).n vertical lines are drawn such that the two endpoints of linei 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.

题意:

给一个数组,其中数组的值表示的是一个坐标(i,ai),那么现在就会有n条垂直的直线,然后这些直线和底下的x轴合成表示一个盛水的容器,然后求这个盛水容器的面积最大是多少?

题解:

首先我们计算,横坐标最大的时候,这种情况下,已经保证了横坐标是最大了,那么只需要考虑纵坐标,而这个面积是由两个纵坐标中的较小那个所决定的,所以我们可以计算这个纵坐标的值,如果刚才的那个面积中纵坐标的开头的那个比末尾的那个要小,那么就将开头的那个+1,否则就将末尾的那个-1.一次类推。

public class Solution {    public int maxArea(int[] height){int length = height.length;if(length == 0 || height == null)   return 0;int start = 0;int end = length - 1;int max = 0;while(start < end){    int area = Math.min(height[start],height[end]) * (end - start);    max = Math.max(max,area);    if(height[start] <= height[end])       start++;    else        end--;}return max;}}


0 0