func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
head := list1
if list1 == nil {
return list2
}
var tmp *ListNode
for list2 != nil {
if list2.Val < list1.Val {
tmp = list2.Next
list2.Next = list1
list1 = list2
list2 = tmp
if head.Val >= list1.Val {
head = list1
}
} else if list2.Val >= list1.Val && (list1.Next == nil || list1.Next.Val >= list2.Val) {
tmp = list2.Next
list2.Next = list1.Next
list1.Next = list2
list2 = tmp
list1 = list1.Next
} else {
list1 = list1.Next
}
}
return head
}