[Algo / neetCode] Container Wirh Most water

데구리·2026년 7월 9일

알고리즘

목록 보기
1/11

문제

링크


최종 코드

class Solution {
public:
    int maxArea(vector<int>& heights) {

        int st = 0, len=heights.size()-1;
        int en = len;

        int mx = (en-st)*((int) min(heights[st], heights[en]));

        int tmp_left = heights[0];
        for (int i=0; i<len; i++) {
            if (i!=0 && tmp_left >= heights[i]) continue;
            tmp_left = heights[i];

            int tmp_right = heights[len];
            for (int j=len; i<j; j--) {
                if (j!=len && tmp_right >= heights[j]) continue;
                tmp_right = heights[j];

                int h = min(heights[i], heights[j]);
                mx = max(mx, (j-i)*h);
            }
        }
        
        return mx;
    }
};

코드 개선하기

투 포인터 활용 코드

class Solution {
public:
    int maxArea(vector<int>& heights) {

        int st = 0, len=heights.size()-1;
        int en = len;

        int mx = -1;

        while (st < en) {
            int h = min(heights[st], heights[en]);
            mx = max(mx, (en-st)*h);

            if (heights[st] < heights[en]) st++;
            else if (heights[st] > heights[en]) en--;
            else {
                st++; en--;
            }
        }
        
        return mx;
    }
};
profile
기록하는 블로그

0개의 댓글