File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed
non-overlapping-intervals Expand file tree Collapse file tree 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