将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。
思路:先整一个新的头结点,然后两个链表比较大小,进行拼接,如果一个全拼进去了,另一个还有剩余的,把剩余的拼上即可。然后返回那个虚拟头结点的next即可。
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
func mergeTwoLists( l1 *ListNode , l2 *ListNode ) *ListNode {
// write code here
headNode := new(ListNode)
node := headNode
for ;l1 != nil && l2 != nil; {
if l1.Val > l2.Val {
node.Next = l2
node = l2
l2 = l2.Next
} else {
node.Next = l1
node = l1
l1 = l1.Next
}
}
if l2 != nil {
node.Next = l2
}
if l1 != nil {
node.Next = l1
}
return headNode.Next
}