遞歸
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
}