时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32M,其他语言64M
热度指数:805773
本题知识点: 链表
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
代码
递归:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function Merge(pHead1, pHead2)
{
if(pHead1 === null) {return pHead2;}
if(pHead2 === null) {return pHead1;}
if(pHead1.val < pHead2.val){
pHead1.next = Merge(pHead1.next, pHead2);
return pHead1;
}else{
pHead2.next = Merge(pHead1, pHead2.next);
return pHead2;
}
}
不递归:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function Merge(pHead1, pHead2)
{
if(pHead1 === null) {return pHead2;}
if(pHead2 === null) {return pHead1;}
var smallHead = pHead1;
var bigHead = pHead2;
if(pHead1.val > pHead2.val){
smallHead = pHead2;
bigHead = pHead1;
}
var res = smallHead;
var resHead = res;
smallHead = smallHead.next;
while(smallHead !== null && bigHead !== null){
if(smallHead.val < bigHead.val){
res.next = smallHead;
res = res.next;
smallHead = smallHead.next;
}else{
res.next = bigHead;
res = res.next;
bigHead = bigHead.next;
}
}
if(smallHead === null) {res.next = bigHead;}
if(bigHead === null) {res.next = smallHead;}
return resHead;
}