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분)
문제 자체는 재밌었다.