llllmz

导航

11. 盛最多水的容器C++

原本想o(n2)遍历的,结果超时了,果然没这么简单就解决。

class Solution {
public:
    int s(vector<int> height,int i,int j){
        int s1=min(height[i],height[j])*(j-i);
        return s1;
    }

    int maxArea(vector<int>& height) {
        int max=0,i=0,j=height.size()-1;
        int x=height[i],y=height[j];
        while(i!=j){
            int tem=s(height,i,j);
            if(tem>max){
                max=tem;
                x=height[i];
                y=height[j];
            }
            if(height[i]<height[j]){
                i++;
                while(height[i] < x && i<j) i++;
            }else{
                j--;
                while(height[j] <y && i<j) j--;
            }
        }

        return max;
    }
};

结果:

posted on 2024-02-22 20:59  神奇的萝卜丝  阅读(19)  评论(0)    收藏  举报