본문 바로가기

코딩 테스트/LeetCode(swift)

[LeetCode] 11. Container With Most Water

반응형

문제

leetcode.com/problems/container-with-most-water/

 

Container With Most Water - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

코드

class Solution {   
    
    func maxArea(_ height: [Int]) -> Int {
        var left = 0
        var right = height.count-1
        var maxVolume = 0
        
        while left < right {
            let tempVolume = (right - left) * min(height[left], height[right])
            maxVolume = max(maxVolume, tempVolume)
            
            if height[left] < height[right] {
                left += 1
            } else {
                right -= 1
            }
        }
        return maxVolume
    }
}

 

설명

코드를 보시면 알겠지만, 투 포인터 문제입니다.

 

left 포인터는 0번째를, right 포인터는 제일 마지막번째를 가르킵니다.

양 끝에서 시작하여, 넓이를 구합니다.

그리고 양끝의 height를 비교하여 작은 height쪽의 index를 이동하며, 넓이를 구해갑니다.

 

회고

문제를 보니, 복잡해 보여서, 어떻게 접근할지에 대해 많이 생각했습니다.

투포인터 알고리즘에 대한 복습입니다.

LeetCode 15번 "3Sum" 한번 풀어보세요 skillist.tistory.com/220

 

15. 3Sum

문제 leetcode.com/problems/3sum/ 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcod..

skillist.tistory.com

 

제출한 코드에 대한 성능이 낮은편인데, 다른 코드들과 비교하더라도, 큰 차이는 없네요.

사이트 환경에 따라, 성능 이 다소 달라질 수 있지만, 흠.... 원인을 잘 모르겠어요;;

 

 

 

 

 

 

 

 

 

 

반응형