File tree 1 file changed +33
-0
lines changed
non-overlapping-intervals
1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ *@link https://leetcode.com/problems/non-overlapping-intervals/description/
3
+ *
4
+ * ์ ๊ทผ ๋ฐฉ๋ฒ :
5
+ * - ์ต์ ์ญ์ ํ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ์ธํฐ๋ฒ ์ข
๋ฃ ์์ ์ด ๋น ๋ฅธ ๊ฑธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
6
+ * - ํ์ ๋ฒ์๋ฅผ ์ขํ๊ธฐ ์ํด์ ์ด์ ์ธํฐ๋ฒ ๋ฒ์์ ๋น๊ต -> ์ด์ ์ธํฐ๋ฒ ์ข
๋ฃ ์ง์ ๋ณด๋ค ์์์ ์ด ๋น ๋ฅด๋ฉด ํฌํจ๋์ด ์์ผ๋ฉด ๊ฒน์น๋๊น ์ญ์ ์นด์ดํธ ์ฆ๊ฐ
7
+ * - ๊ฒน์น์ง ์์ ๋๋ ์ด์ ์ธํฐ๋ฒ์ ํ์ฌ ์ธํฐ๋ฒ๋ก ์
๋ฐ์ดํธํ๊ธฐ
8
+ *
9
+ * ์๊ฐ๋ณต์ก๋ : O(nlogn)
10
+ * - n = intervals์ ๊ธธ์ด
11
+ * - ์ ๋ ฌํ์ผ๋ฏ๋ก O(nlogn)
12
+ *
13
+ * ๊ณต๊ฐ๋ณต์ก๋ : O(1)
14
+ * - ๊ณ ์ ๋ ๋ณ์๋ง ์ฌ์ฉ
15
+ */
16
+ function eraseOverlapIntervals ( intervals : number [ ] [ ] ) : number {
17
+ intervals . sort ( ( a , b ) => a [ 1 ] - b [ 1 ] ) ;
18
+
19
+ let eraseCount = 0 ,
20
+ previousInterval = intervals [ 0 ] ;
21
+
22
+ for ( let i = 1 ; i < intervals . length ; i ++ ) {
23
+ const currentInterval = intervals [ i ] ;
24
+
25
+ if ( currentInterval [ 0 ] < previousInterval [ 1 ] ) {
26
+ eraseCount ++ ;
27
+ } else {
28
+ previousInterval = intervals [ i ] ;
29
+ }
30
+ }
31
+
32
+ return eraseCount ;
33
+ }
You canโt perform that action at this time.
0 commit comments