container with most water

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

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 and n is at least 2.

没什么好说的,双指针,O(n)。

猜你喜欢

转载自www.cnblogs.com/ustcrliu/p/8985523.html