LeetCode: Container With Most Water

来源:互联网 发布:医院体检软件 编辑:程序博客网 时间:2024/06/05 12:35

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) {       int start = 0, end = height.size()-1;       int max = INT_MIN;       while(start < end)       {           int cur = std::min(height[start], height[end]) * (end - start);           max = std::max(max, cur);           if(height[start] <= height[end])                start++;           else                end--;       }       return max;    }};


Round 2:


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

0 0