파비의 매일매일 공부기록

Today's Challenge 본문

Problem Solving/LeetCode

Today's Challenge

fabichoi 2022. 10. 7. 23:45

https://leetcode.com/problems/my-calendar-iii/

 

My Calendar III - 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

Hard 난이도라 시작하기 전부터 살짝 쫄음 =_=;;
Balanced Tree를 이용한 방법으로 솔루션 참고

from sortedcontainers import SortedList

class MyCalendarThree:

    def __init__(self):
        self.starts = SortedList([[0, 0]])
        self.res = 0
    
    def split(self, x: int) -> None:
        idx = self.starts.bisect_left([x, 0])
        if idx < len(self.starts) and self.starts[idx][0] == x:
            return idx
        self.starts.add([x, self.starts[idx-1][1]])        

    def book(self, start: int, end: int) -> int:
        self.split(start)
        self.split(end)
        for interval in self.starts.irange([start, 0], [end, 0], (True, False)):
            interval[1] += 1
            self.res = max(self.res, interval[1])
        return self.res
반응형

'Problem Solving > LeetCode' 카테고리의 다른 글

Today's Challenge  (0) 2022.10.09
Today's Challenge  (0) 2022.10.08
Today's Challenge  (0) 2022.10.06
Today's Challenge  (0) 2022.10.05
Today's Challenge  (0) 2022.10.04
Comments