题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
采用递归的方式会非常简洁好看,只需不断比较两个链表的头部,选择较小的结点插入新链表即可。需要注意的时候,当一个链表空了之后,只需要继续接上另一个没遍历完的链表即可。时间复杂度为O(n*2)=O(n)。
Code
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function Merge(pHead1, pHead2)
{
// write code here
let newHead=null;
if(!pHead1) return pHead2;
if(!pHead2) return pHead1;
if(pHead1.val<pHead2.val){
newHead=pHead1;
newHead.next=Merge(pHead1.next,pHead2);
}else{
newHead=pHead2;
newHead.next=Merge(pHead1,pHead2.next);
}
return newHead;
}
运行环境:JavaScript (V8 6.0.0)
运行时间:13ms
占用内存:5436k