11. Container With Most Water

题目:

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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.

链接:http://leetcode.com/problems/container-with-most-water/

题解:Two Pointers, 每次移动至较小的一个pointer。Time Complexity - O(n), Space Complexity - O(1)

public class Solution {

    public int maxArea(List<Integer> height) {

        if(height == null || height.size() < 2)

            return 0;

        int max = 0, left = 0, right = height.size() - 1;

        

        while(left < right){

            int curArea = Math.min(height.get(left), height.get(right)) * (right - left);

            max = Math.max(max, curArea);

            if(height.get(left) < height.get(right))

                left++;

            else

                right--;

        }

        

        return max;

    }

}

 

你可能感兴趣的:(contain)