21. 合并两个有序链表

72 阅读1分钟

21. 合并两个有序链表

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
}