File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * function ListNode(val, next) {
4
+ * this.val = (val===undefined ? 0 : val)
5
+ * this.next = (next===undefined ? null : next)
6
+ * }
7
+ */
8
+ /**
9
+ * @param {ListNode[] } lists
10
+ * @return {ListNode }
11
+ */
12
+ const mergeKLists = function ( lists ) {
13
+ // ๊ฐ ๋
ธ๋์ val ๋ณ ๊ฐ์๋ฅผ ๊ฐ์ฒด๋ก ๋ํ๋
14
+ const counter = { } ;
15
+
16
+ for ( let list of lists ) {
17
+ let node = list ;
18
+ while ( node ) {
19
+ counter [ node . val ] = ( counter [ node . val ] || 0 ) + 1 ;
20
+ node = node . next ;
21
+ }
22
+ }
23
+
24
+ // ์์์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ํํ๋ฉด์ node์ list๋ฅผ ์์ฑ
25
+ let head = new ListNode ( ) ;
26
+ let current = head ;
27
+ const entries = Object . entries ( counter ) . sort ( ( [ val1 ] , [ val2 ] ) => Number ( val1 ) - Number ( val2 ) ) ; // val ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
28
+
29
+ for ( let i = 0 ; i < entries . length ; i ++ ) {
30
+ const [ val , count ] = entries [ i ] ;
31
+
32
+ for ( let j = 0 ; j < count ; j ++ ) {
33
+ const node = new ListNode ( Number ( val ) ) ;
34
+ current . next = node ;
35
+ current = current . next ;
36
+ }
37
+ }
38
+
39
+ return head . next ;
40
+ } ;
41
+
42
+ // ์๊ฐ๋ณต์ก๋: O(n * log n) (sort์์ n * log n, ์ํ์ ๋ฆฌ์คํธ ๊ตฌ์ฑ์์๋ n)
43
+ // ๊ณต๊ฐ๋ณต์ก๋: O(n)
44
+
45
+ // ์ต์ํ์ ํตํด ์ต์ ํ๋ฅผ ํ ์ ์์
You canโt perform that action at this time.
0 commit comments