[leetcode] 11. Container With Most Water

kldaji·2022년 9월 9일
0

leetcode

목록 보기
52/56

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
    }
}
profile
다양한 관점에서 다양한 방법으로 문제 해결을 지향하는 안드로이드 개발자 입니다.

0개의 댓글