two pointer (1)
- 우연히 맞은 정답...!
class Solution {
fun maxArea(height: IntArray): Int {
var result = 0
var start = 0
var end = height.size - 1
while (start < end) {
result = maxOf((end - start) * minOf(height[start], height[end]), result)
if (height[start] < height[end]) start++
else end--
}
return result
}
}
two pointer (2)
- 너비가 가장 긴 컨테이너 면적부터 계산!
- 너비가 짧아질수록 더 큰 컨테이너 면적을 얻기 위한 조건은 컨테이너의 높이가 이전 높이보다 반드시 높아야 한다!
class Solution {
fun maxArea(height: IntArray): Int {
var result = 0
var start = 0
var end = height.size - 1
while (start < end) {
val h = minOf(height[start], height[end])
result = maxOf((end - start) * h, result)
while (height[start] <= h && start < end) start++
while (height[end] <= h && start < end) end --
}
return result
}
}