주어진 int형 배열 height내에 존재하는 요소 두개로 만들 수 있는 가장 큰 사각형의 넓이를 구하는 문제이다.
문제의 포인트는 사각형의 넓이에 영향을 미치는 것은 가로(두 인덱스간의 거리) x 세로(두 요소중 더 작은 수)라는 것이다. 그러니까 더 작은 요소(세로)가 최대의 넓이를 만들 수 있다는 것이다.
class Solution {
public int maxArea(int[] height) {
int max = 0;
int left = 0;
int right = height.length - 1;
while (left < right) {
int n1 = height[left];
int n2 = height[right];
int h = Math.min(n1, n2);
int w = right - left;
max = Math.max(max, h * w);
if (n2 <= n1) {
right--;
} else {
left++;
}
}
return max;
}
}