You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
898 B
43 lines
898 B
package mergesorted
|
|
|
|
type ListNode struct {
|
|
Val int
|
|
Next *ListNode
|
|
}
|
|
|
|
func reverse(list *ListNode) *ListNode {
|
|
var result *ListNode
|
|
for list != nil {
|
|
result = &ListNode{Val: list.Val, Next: result}
|
|
list = list.Next
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
|
|
|
|
var result *ListNode
|
|
for list1 != nil || list2 != nil {
|
|
if list1 == nil {
|
|
result = &ListNode{Val: list2.Val, Next: result}
|
|
list2 = list2.Next
|
|
} else if list2 == nil {
|
|
result = &ListNode{Val: list1.Val, Next: result}
|
|
list1 = list1.Next
|
|
} else if list1.Val < list2.Val {
|
|
result = &ListNode{Val: list1.Val, Next: result}
|
|
list1 = list1.Next
|
|
} else {
|
|
result = &ListNode{Val: list2.Val, Next: result}
|
|
list2 = list2.Next
|
|
}
|
|
}
|
|
|
|
return reverse(result)
|
|
}
|
|
|
|
func MergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
|
|
return mergeTwoLists(list1, list2)
|
|
}
|