Skip to content

Commit 409c862

Browse files
committed
Add merge two sorted lists solution
1 parent c3e3c21 commit 409c862

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+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n + m)
2+
// - n: list1์˜ ๊ธธ์ด, m: list2์˜ ๊ธธ์ด
3+
// - ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์”ฉ๋งŒ ์ˆœํšŒํ•˜๋ฉฐ ๋ณ‘ํ•ฉํ•˜๋ฏ€๋กœ O(n + m)
4+
//
5+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
6+
// - ์ฃผ์–ด์ง„ ๋…ธ๋“œ๋“ค์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘ํ•ฉํ•˜๊ณ , ์ถ”๊ฐ€๋กœ ๋”๋ฏธ ๋…ธ๋“œ(dummy) ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ
7+
// - ์žฌ๊ท€ ํ˜ธ์ถœ ์—†์ด ํฌ์ธํ„ฐ๋งŒ ์ด๋™ํ•˜๋ฏ€๋กœ ์ƒ์ˆ˜ ๊ณต๊ฐ„๋งŒ ํ•„์š”
8+
9+
class Solution {
10+
fun mergeTwoLists(list1: ListNode?, list2: ListNode?): ListNode? {
11+
val dummy = ListNode(0)
12+
var current = dummy
13+
14+
var p1 = list1
15+
var p2 = list2
16+
17+
while (p1 != null && p2 != null) {
18+
if (p1.`val` >= p2.`val`) {
19+
current.next = p2
20+
p2 = p2.next
21+
} else {
22+
current.next = p1
23+
p1 = p1.next
24+
}
25+
26+
current = current.next!!
27+
}
28+
29+
current.next = p1 ?: p2
30+
31+
return dummy.next
32+
}
33+
}

0 commit comments

Comments
ย (0)