LeetCode - Container With Most Water

600g (Kim Dong Geun)·2020년 9월 11일
0

문제 설명

n개의 자연수가 주어진 배열이 주어진다.
배열의 인덱스에 배열의 값을 가진 벽을 2개 박는다고 했을때,
최댓값이 되는 넓이를 구하여라.

해결 방법

제일먼저 떠오른 방법이 2 Pointer 라는 생각이 들었다.
(그다음 Brute Force)

2Pointer를 사용하고 l<R인 조건에
minHeight가 낮은 l과 r을 한칸씩 증가 하거나 감소하면 될 것 같았다.

코드

import java.lang.*;
class Solution {
    public int maxArea(int[] height) {
        
        int l=0;
        int r=height.length-1;
        int max = 0;
        while(l<r){
            int minHeight = Math.min(height[l],height[r]);
            int value = minHeight*(r-l);
            if(max<value) max = value;
            if(minHeight==height[l])
                l++;
            else
                r--;
        }
        return max;
    }
}

소감

생각한대로 푸니 얼마 걸리지 않았다.(10분)

문제 자체는 재밌었다.

profile
수동적인 과신과 행운이 아닌, 능동적인 노력과 치열함

0개의 댓글