[LeetCode-Java]11. Container With Most Water

来源:互联网 发布:去重sql语句 distinct 编辑:程序博客网 时间:2024/04/27 06:24

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.

解:题目的意思即是找最大面积的长方形。其坐标肯定在最左到最右的某两个坐标。先取最左和最右作为最优解,一步步移动从而得出最优解。而移动的过程中,长方形的长随之减小,要想成为最优解长方形的高必须增加,也就是说移动的规则就是替换左右两边高度较低的那条边,一步步寻找最优解。

public class Solution {    public int maxArea(int[] height) {        int maxArea = 0;        int left = 0,right = height.length - 1;        while (left<right){            maxArea = Math.max(maxArea,(right - left)*((int)Math.min(height[left],height[right])));            if (height[left] < height[right])  left++;            else right--;        }        return  maxArea;    }}
0 0
原创粉丝点击