题目
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题
单调不减规则,意味着合并后的链表可能存在重复的值,也就是说并不是单调递增的。知道题目后,以我的解法,就是循环取出第二个链表的节点,遍历第一个链表,将取出的节点插入第一个链表的合适位置。
代码
class Solution
{
public ListNode Merge(ListNode pHead1, ListNode pHead2)
{
// write code here
if(pHead1==null)
return pHead2;
if(pHead2==null)
return pHead1;
ListNode node = pHead2.next;
while (true)
{
pHead1 = InsertNode(pHead1, pHead2);//每次都返回新链表的头节点
if (node == null)
break;
pHead2 = node;
node = node.next;
}
return pHead1;
}
public ListNode InsertNode(ListNode pHead, ListNode node)
{
if (pHead.val >= node.val)
{
node.next = pHead;
return node;
}
ListNode node2 = pHead;
ListNode node3 = pHead.next;
while (node3 != null)
{
if (node3.val >= node.val)
{
node.next = node3;
node2.next = node;
return pHead;
}
node2 = node3;
node3 = node3.next;
}
node2.next = node;
node.next = null;
return pHead;
}
}