Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b9f4254

Browse files
author
Yeqi Tao
committed
Add Soulution.go for 0023.Merge k Sorted Lists
1 parent f95b941 commit b9f4254

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* type ListNode struct {
4+
* Val int
5+
* Next *ListNode
6+
* }
7+
*/
8+
func mergeKLists(lists []*ListNode) *ListNode {
9+
if len(lists) == 0 {
10+
return nil
11+
}
12+
for len(lists) != 1 {
13+
newLists := make([]*ListNode, 0)
14+
for i:=0; i<len(lists); i ++ {
15+
if i < len(lists) - 1 {
16+
nl := merge2List(lists[i], lists[i+1])
17+
newLists = append(newLists, nl)
18+
i++
19+
} else if i == len(lists) - 1 && len(lists)%2 == 1 {
20+
newLists = append(newLists, lists[i])
21+
}
22+
}
23+
lists = newLists
24+
}
25+
return lists[0]
26+
}
27+
28+
func merge2List(l1, l2 *ListNode) *ListNode {
29+
p := &ListNode{}
30+
h := p
31+
for l1 != nil || l2 != nil {
32+
if l1 == nil && l2 != nil {
33+
p.Next = l2
34+
p = p.Next
35+
l2 = l2.Next
36+
} else if l1 != nil && l2 == nil {
37+
p.Next = l1
38+
p = p.Next
39+
l1 = l1.Next
40+
} else {
41+
if l1.Val < l2.Val {
42+
p.Next = l1
43+
p = p.Next
44+
l1 = l1.Next
45+
} else {
46+
p.Next = l2
47+
p = p.Next
48+
l2 = l2.Next
49+
}
50+
}
51+
}
52+
return h.Next
53+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /