递归
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {if nil == l1 {return l2}if nil == l2 {return l1}if l1.Val < l2.Val {l1.Next = mergeTwoLists(l1.Next, l2)return l1} else {l2.Next = mergeTwoLists(l1, l2.Next)return l2}
}
Me(存在问题)非递归版本实现
这个测试用例跑不过,原因没查出。但本地跑输出是正确的,逻辑也没问题
输入:
[-9,3]
[5,7]
输出
[-9,3,7]
预期结果
[-9,3,5,7]
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {if l1 == nil {return l2}if l2 == nil {return l1}result := l1r := resultif l1.Val > l2.Val {result = l2l2 = l2.Nextr = result} else {l1 = l1.Nextr = result}for l1 != nil && l2 != nil {if l1.Val < l2.Val {result.Next = l1l1 = l1.Nextresult = result.Next} else {result.Next = l2l2 = l2.Nextresult = result.Next}}if l1 == nil && l2 != nil{for l2 != nil{result.Next = l2l2 = l2.Next}}if l1 != nil && l2 == nil{for l1 != nil{result.Next = l1l1 = l1.Next}}return r
}