将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
代码实现
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
var datas []int
for {
if l1 != nil {
datas = append(datas, l1.Val)
l1 = l1.Next
} else {
break
}
}
for {
if l2 != nil {
datas = append(datas, l2.Val)
l2 = l2.Next
} else {
break
}
}
for i := 0; i < len(datas)-1; i++ {
for j := 0; j < len(datas)-1-i; j++ {
if datas[j] > datas[j+1] {
datas[j], datas[j+1] = datas[j+1], datas[j]
}
}
}
if len(datas) == 0 {
return nil
} else {
l3 := &ListNode{datas[0], nil}
l3Node := l3
for i := 1; i < len(datas); i++ {
l3Node.Next=&ListNode{datas[i],nil}
l3Node=l3Node.Next
}
return l3
}
}