首页 > 代码库 > 【LeetCode】Container With Most Water

【LeetCode】Container With Most Water

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.

 

双指针,思路与Trapping Rain Water类似。

数值小的指针往中间逼近。

复杂度O(n)。

 

class Solution {public:    int maxArea(vector<int> &height) {        if(height.empty() || height.size() == 1)            return 0;                    int result = 0;        int left = 0;        int right = height.size()-1;        int leftWall = height[left];        int rightWall = height[right];        while(left < right)        {            result = max(result, min(leftWall, rightWall) * (right-left));            if(leftWall <= rightWall)            {                left ++;                leftWall = height[left];            }            else            {                right --;                rightWall = height[right];            }        }        return result;    }};

技术分享

【LeetCode】Container With Most Water