一、题目描述

11.盛最多水的容器leetcode

二、算法原理

解法一:暴力枚举 超时

解法二:利用单调性,使用双指针来解决,时间复杂度O(n)

三、代码实现

class Solution 
{
public:
    int maxArea(vector<int>& height) 
    {
        int left = 0,right = height.size()-1,ret = 0;
        while(left < right)
        {
            int v = min(height[left],height[right]) * (right - left);;
            ret = max(ret,v);
            //移动指针,谁小移动谁
            if(height[left]<height[right]) left++;
            else right--;
        }
        return ret;
    }
};

更多推荐