Skip to content

Commit cf5e717

Browse files
author
이연수
committed
merge two sorted lists
1 parent 03ded85 commit cf5e717

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package leetcode_study
2+
3+
/*
4+
* 오름차순으로 정렬된 두 노드 리스트를 크기 순서대로 병합하는 문제
5+
* 기준 노드와 다음 노드를 가리키는 포인터 노드를 상용해 문제 해결
6+
* 시간 복잡도: O(n)
7+
* -> 주어진 두 노드 숫자만큼 순회
8+
* 공간 복잡도: O(1)
9+
* */
10+
fun mergeTwoLists(list1: ListNode?, list2: ListNode?): ListNode? {
11+
val resultNode = ListNode(0)
12+
var currentNode = resultNode
13+
14+
var firstCurrentNode = list1
15+
var secondCurrentNode = list2
16+
17+
while (firstCurrentNode != null && secondCurrentNode != null) {
18+
if (firstCurrentNode.value <= secondCurrentNode.value) {
19+
currentNode.next = ListNode(firstCurrentNode.value)
20+
firstCurrentNode = firstCurrentNode.next
21+
} else {
22+
currentNode.next = ListNode(secondCurrentNode.value)
23+
secondCurrentNode = secondCurrentNode.next
24+
}
25+
currentNode = currentNode.next!!
26+
}
27+
28+
if (firstCurrentNode != null) {
29+
currentNode.next = firstCurrentNode
30+
} else if(secondCurrentNode != null) {
31+
currentNode.next = secondCurrentNode
32+
}
33+
return resultNode.next
34+
}
35+
36+
37+
class ListNode(
38+
var value: Int,
39+
) {
40+
var next: ListNode? = null
41+
}

0 commit comments

Comments
 (0)