Skip to content

Commit 8230f9d

Browse files
committed
Add merge sorted lists
1 parent e22d942 commit 8230f9d

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

Easy/merge-two-sorted-lists.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
Code
2+
====
3+
4+
```go
5+
/**
6+
* Definition for singly-linked list.
7+
* type ListNode struct {
8+
* Val int
9+
* Next *ListNode
10+
* }
11+
*/
12+
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
13+
head := &ListNode{}
14+
temp := head
15+
for l1 != nil && l2 != nil {
16+
if l1.Val < l2.Val {
17+
head.Next = l1
18+
l1 = l1.Next
19+
head = head.Next
20+
} else {
21+
head.Next = l2
22+
l2 = l2.Next
23+
head = head.Next
24+
}
25+
}
26+
27+
if l1 != nil {
28+
head.Next = l1
29+
}
30+
31+
if l2 != nil {
32+
head.Next = l2
33+
}
34+
35+
return temp.Next
36+
}
37+
```
38+
39+
Solution in mind
40+
================
41+
42+
- While lists are non empty, compare heads of both lists.
43+
- Make merged list point to lower.
44+
- Increment node pointer of lower.
45+
- Move merge pointer to new node.
46+
- If either list is empty and other is not, make merged pointer point to beginning of list.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ Easy
1919

2020
- [longest-common-prefix](Easy/longest-common-prefix.md)
2121

22+
- [merge-two-sorted-lists](Easy/merge-two-sorted-lists.md)
23+
2224
Medium
2325
------
2426

0 commit comments

Comments
 (0)