LeetCode 011 Container With Most Water

来源:互联网 发布:excel办公软件下载 编辑:程序博客网 时间:2024/04/29 03:32

题目描述

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.

分析

左右加逼,和2Sum的原理一样。

这里写图片描述

伪代码是贪婪算法,保证局部最优,

这里写图片描述

代码

    public static int maxArea(int[] height) {        if (height == null || height.length == 0) {            return 0;        }        int maxArea = 0;        int left = 0;        int right = height.length - 1;        while (left < right) {            int curArea = Math.min(height[left], height[right])                    * (right - left);            maxArea = Math.max(maxArea, curArea);            if (height[left] < height[right]) {                left++;            } else {                right--;            }        }        return maxArea;    }
1 0