궁금한게 많은 개발자 노트

[ leetcode ] 11. Container With Most Water 본문

Algorithm

[ leetcode ] 11. Container With Most Water

궁금한게 많은 개발자 2023. 5. 2. 13:27

막대의 높이가 담긴 배열이 주어졌을 때, 두 막대와 x축으로 담기는 물의 최대 양을 구하는 문제입니다.

two pointer문제로 이차원 배열에서 시간 초과가 발생하는 문제를 해결합니다.

두 포인터 중 작은 쪽의 포인터를 변경하고, 넓이 구할 시 가로는 포인터 사이 거리이고, 높이는 작은 막대로 구합니다.

#define max(a,b)((a) > (b) ? (a) : (b))
#define min(a,b)((a) > (b) ? (b) : (a))

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