File tree 1 file changed +27
-0
lines changed
1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Source: https://leetcode.com/problems/merge-intervals/
3
+ * ํ์ด๋ฐฉ๋ฒ: ์ ๋ นํ ์ฒซ๋ฒ์งธ ๊ตฌ๊ฐ ์ถ๊ฐํ๊ณ ์ดํ ์ํํ๋ฉด์ ๊ฒน์น๋์ง ํ์ธ ํ ๋ณํฉ or ์ถ๊ฐ
4
+ * ์๊ฐ๋ณต์ก๋: O(NlogN) - ์ ๋ ฌ์์ NlogN
5
+ * ๊ณต๊ฐ๋ณต์ก๋: O(N) - ๊ฒฐ๊ณผ ์ ์ฅํ ๊ณต๊ฐ
6
+ */
7
+
8
+ function merge ( intervals : number [ ] [ ] ) : number [ ] [ ] {
9
+ if ( intervals . length <= 1 ) return intervals ;
10
+
11
+ intervals . sort ( ( a , b ) => a [ 0 ] - b [ 0 ] ) ;
12
+ const result : number [ ] [ ] = [ intervals [ 0 ] ] ;
13
+
14
+ for ( let i = 1 ; i < intervals . length ; i ++ ) {
15
+ const current = intervals [ i ] ;
16
+ const lastMerged = result [ result . length - 1 ] ;
17
+
18
+ // ํ์ฌ ๊ตฌ๊ฐ์ ์์์ ์ด ์ด์ ๊ตฌ๊ฐ์ ๋์ ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด merge
19
+ if ( current [ 0 ] <= lastMerged [ 1 ] ) {
20
+ lastMerged [ 1 ] = Math . max ( lastMerged [ 1 ] , current [ 1 ] ) ; // ๋์ ์ ๋ ๊ตฌ๊ฐ์ ๋์ ์ค ๋ ํฐ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธ
21
+ } else {
22
+ result . push ( current ) ;
23
+ }
24
+ }
25
+
26
+ return result ;
27
+ }
You canโt perform that action at this time.
0 commit comments