0021.合并两个有序链表

方法一:遍历

时间复杂度 $O(m+n)$,空间复杂度 $O(1)$,$m$ 和 $n$ 分别表示 $list1$ 和 $list2$ 的长度。

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
	dummy := &ListNode{}
	p := dummy
	for ; list1 != nil && list2 != nil; p = p.Next {
		if list1.Val < list2.Val {
			p.Next, list1 = list1, list1.Next
		} else {
			p.Next, list2 = list2, list2.Next
		}
	}
	if list1 != nil {
		p.Next = list1
	} else {
		p.Next = list2
	}
	return dummy.Next
}