leetcode 11. Container With Most Water

来源:互联网 发布:小白软件管家 知乎 编辑:程序博客网 时间:2024/05/29 15:39

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

解:从两头开始遍历

代码:

class Solution {public:    int maxArea(vector<int>& height) {        int area = 0;        int i = 0;        int j = height.size() - 1;        int h = 0, w = 0;        while(i < j){            h = min(height[i], height[j]);            w = j - i;            area = max(area, w * h);            while(i < j && height[i] <= h) i++;            while(i < j && height[j] <= h) j--;        }        return area;    }};