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