LeetCode: 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.

有时一个双指针问题。

class Solution {
public:
    int maxArea(vector<int> &height) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int nSize = height.size();
        int i = 0;
        int j = nSize - 1;
        int mArea = 0;
        int tmp = 0;
        while(i < j)
        {
            tmp = (j - i) * (height[i] < height[j] ? height[i] : height[j]);
            mArea = tmp > mArea ? tmp : mArea;
            if (height[i] < height[j])
                while(height[i] > height[++i]);
            else
                while (height[j] > height[--j]);
        }
        return mArea;
    }
};


你可能感兴趣的:(LeetCode: Container With Most Water)