問題形貌
輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,固然我們須要合成后的鏈表滿足單調不減劃定規矩。
剖析
起首斟酌兩個鏈表的頭部哪一個成為新鏈表的頭,顯然是值小的誰人是新的頭;
然後是兼并時,兩個鏈表上離別有一個指針cur1和cur2,比較兩個指針指向的節點值大小,較小的鏈接到新鏈表的尾部,且指針今後挪動一個,較大的則不動;
可能有某個鏈表未遍歷完,直接將其全添加到新鏈表尾部即可。
代碼完成
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function Merge(h1, h2)
{
if(h1 === null && h2 === null)
return;
if(h1 === null)
return h2;
if(h2 === null)
return h1;
var newH = null, cur1 = null, cur2 = null, newE = null;
if(h1.val < h2.val){
newH = h1;
cur1 = h1.next;
cur2 = h2;
}
else{
newH = h2;
cur1 = h1;
cur2 = h2.next;
}
newE = newH;
while (cur1 !== null && cur2 !== null) {
if(cur1.val < cur2.val){
newE.next = cur1;
cur1 = cur1.next;
}else{
newE.next = cur2;
cur2 = cur2.next;
}
newE = newE.next;
}
while(cur1 !== null){
newE.next = cur1;
cur1 = cur1.next;
}
while(cur2 !== null){
newE.next = cur2;
cur2 = cur2.next;
}
return newH;
}