Algorithm/LeetCode
[Java] LeetCode 11번 Container With Most Water
파란제이
2021. 9. 26. 14:38
막대기 2개로 둘러쌓인 부분의 넓이를 구하는 것이 문제이다.
작은 길이의 막대기가 기준이 되어 넓이가 구해지는 것이 문제의 포인트이다.
왼쪽 막대기의 위치를 l 오른쪽 막대기의 위치를 r로 두고, 왼쪽과 오른쪽 중 작은 길이의 막대기를 한칸씩 옮겨서 넓이의 최대값을 찾는다. 작은 것은 옮기는 이유는 더 큰 넓이가 되기 위해서는 작은 길이의 막대기가 길어져야되기 때문이다.
class Solution {
public int maxArea(int[] height) {
int l = 0;
int r = height.length - 1;
int max = (r - l) * Math.min(height[l], height[r]);
while (l < r) {
if (height[l] <= height[r]) {
l++;
} else {
r--;
}
max = Math.max((r - l) * Math.min(height[l], height[r]), max);
}
return max;
}
}
반응형