Skip to content

Commit 4f30667

Browse files
committed
merge two sorted lists solution
1 parent f978922 commit 4f30667

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* Merge Two Sorted Lists
3+
*
4+
* ํ•ต์‹ฌ ์•„์ด๋””์–ด:
5+
* - ๋‘ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ์—ฐ๊ฒฐ
6+
* - ๋”๋ฏธ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด head ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ฆ
7+
* - ํ•œ์ชฝ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๋‚˜๋จธ์ง€๋ฅผ ๊ทธ๋Œ€๋กœ ์—ฐ๊ฒฐ
8+
*
9+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n + m) - ๋‘ ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธ
10+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1) - ์ƒˆ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ธฐ์กด ๋…ธ๋“œ๋งŒ ์žฌ๋ฐฐ์น˜
11+
*/
12+
const mergeTwoLists = (list1, list2) => {
13+
// ๋”๋ฏธ ๋…ธ๋“œ: head ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์ž„์‹œ ์‹œ์ž‘์ 
14+
const dummy = { val: 0, next: null };
15+
let current = dummy;
16+
17+
// ๋‘ ๋ฆฌ์ŠคํŠธ ๋ชจ๋‘ ๋‚จ์•„์žˆ๋Š” ๋™์•ˆ ๋น„๊ตํ•˜๋ฉฐ ๋ณ‘ํ•ฉ
18+
while (list1 !== null && list2 !== null) {
19+
if (list1.val <= list2.val) {
20+
current.next = list1; // ๋” ์ž‘์€ ๋…ธ๋“œ ์—ฐ๊ฒฐ
21+
list1 = list1.next; // list1 ํฌ์ธํ„ฐ ์ด๋™
22+
} else {
23+
current.next = list2;
24+
list2 = list2.next;
25+
}
26+
current = current.next; // ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ ํฌ์ธํ„ฐ ์ด๋™
27+
}
28+
29+
// ๋‚จ์€ ๋…ธ๋“œ๋“ค์„ ๊ทธ๋Œ€๋กœ ์—ฐ๊ฒฐ (์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ์Œ)
30+
current.next = list1 !== null ? list1 : list2;
31+
32+
return dummy.next; // ๋”๋ฏธ ๋…ธ๋“œ ๋‹ค์Œ๋ถ€ํ„ฐ๊ฐ€ ์‹ค์ œ ๊ฒฐ๊ณผ
33+
};

0 commit comments

Comments
ย (0)