Skip to content

Commit 2c5eb23

Browse files
committed
solve: Non-overlapping Intervals
1 parent 3f7d0f8 commit 2c5eb23

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"""
2+
Constraints:
3+
- 1 <= intervals.length <= 10^5
4+
- intervals[i].length == 2
5+
- -5 * 10^4 <= starti < endi <= 5 * 10^4
6+
7+
Time Complexity: O(n * log n)
8+
- ๊ตฌ๊ฐ„ ์ •๋ ฌ ์‹œ O(n * log n) ์‚ฌ์šฉ, ์ •๋ ฌ๋œ ๊ตฌ๊ฐ„์„ ์ˆœํšŒํ•  ๋•Œ O(n)
9+
10+
Space Complexity: O(1)
11+
- ์ •ํ•ด์ง„ ๋ณ€์ˆ˜ ์™ธ์—๋Š” ๊ณต๊ฐ„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
12+
13+
ํ’€์ด๋ฐฉ๋ฒ•:
14+
1. ๋์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ <- ์ œ๊ฑฐํ•  ๊ตฌ๊ฐ„์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด
15+
2. ์ฒซ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์„ ์„ ํƒํ•˜๊ณ  ๊ทธ ๊ตฌ๊ฐ„์˜ ๋์ ์„ ๊ธฐ๋กํ•จ
16+
3. ๋‘ ๋ฒˆ์งธ ๊ตฌ๊ฐ„๋ถ€ํ„ฐ end๋ณด๋‹ค ์‹œ์ž‘์ ์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€(๊ฒน์น˜์ง€ ์•Š๋Š”) ๊ตฌ๊ฐ„์„ ์ฐพ์•„์„œ ์นด์šดํŠธ
17+
4. ์ „์ฒด ๊ตฌ๊ฐ„์˜ ์ˆ˜์—์„œ count๋ฅผ ๋นผ์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•  ๊ตฌ๊ฐ„์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
18+
"""
19+
class Solution:
20+
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
21+
if not intervals:
22+
return 0
23+
24+
intervals.sort(key=lambda x: x[1])
25+
26+
count = 1
27+
end = intervals[0][1]
28+
29+
for interval in intervals[1:]:
30+
31+
if interval[0] >= end:
32+
count += 1
33+
end = interval[1]
34+
35+
return len(intervals) - count
36+

0 commit comments

Comments
ย (0)