class Solution {
public int maxArea(int[] height) {
int maxWater = 0;
for (int i = 0; i < height.length - 1; i++) {
for (int j = i+1; j < height.length; j++) {
int water = (j - i) * Math.min(height[i], height[j]);
if(maxWater < water)
maxWater = water;
}
}
return maxWater;
}
}
그냥 for를 활용한 브루트포스로 하면 풀리긴 하는데, 시간초과
역시, Two Pointer를 사용하면 되는데, 인덱스를 옮겨가면서, 탐색을 하는 방법을 찾는게 어려웠음
맨 처음 가장 넓은(0 ~ height.length-1)너비에서 그 다음으로 가면 너비가 점점 줄어드는데, 총 용량이 늘어나려면 높이가 큰 막대를 찾아야 함
class Solution {
public int maxArea(int[] height) {
int left = 0;
int right = height.length - 1;
int maxWater = 0;
while(left < right) {
maxWater = Math.max((right - left) * Math.min(height[left], height[right]), maxWater);
if(height[left] < height[right]) {
left++;
}else {
right--;
}
}
return maxWater;
}
}
'JAVA > leetcode' 카테고리의 다른 글
[LeetCode] Array - Find Pivot Index !! (0) | 2021.08.06 |
---|---|
[LeetCode] Array - Find All Numbers Disappeared in an Array (0) | 2021.08.06 |
[LeetCode] Array - Sort Array By Parity - Two-pointer (0) | 2021.08.05 |
[LeetCode] Array - Move Zeroes - Two-pointer (0) | 2021.08.05 |
[LeetCode] Array - Replace Elements with Greatest Element on Right Side (0) | 2021.08.05 |