[LeetCode] #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.

本题依次寻找左右两端的高度围成的最多的水,然后移动最矮的一边高度。时间:38ms。我的代码:

class Solution {
public:
    int maxArea(vector<int> &height) {
        int capability = 0;
        size_t left = 0, right = height.size() - 1;
    
        while (left < right){
            const int water = min(height[left], height[right]) * (right - left);
            if (water > capability) 
                capability = water;
            if (height[left] < height[right])
                ++left;
            else
                --right;
        }
        return capability;
    }
};
“If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.”
原文地址:https://www.cnblogs.com/Scorpio989/p/4433560.html