輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
每次先返回當前最小的值,對於剩下的再進行遞迴呼叫。
/*
struct listnode
};*/
public listnode merge(listnode list1,listnode list2)
if(list2 == null)
if(list1.val <= list2.val)else
}
再建立乙個新的鍊錶用來存放合併後的結果。
/*
struct listnode
};*/
class solution
else
p=phead3;
while(phead1!=null&&phead2!=null)
else
}if(phead1) p->next=phead1;
else if(phead2) p->next=phead2;
return phead3;
}};
如果初學鍊錶,可能會問為什麼還需要乙個指標p,直接用乙個phead3不好嗎?注意 p=p->next 這一句,每次鍊錶前進乙個單位,意味著後面的值把前面的值覆蓋了。舉個例子,phead1=,phead2=,如果我們只使用乙個指標phead3,則最終返回的是phead3和phead3->next兩個值 ,即。所以我們需要兩個指標,phead3用來記錄頭結點,p用來不斷前進,這樣才能返回完整的鍊錶。 合併兩個排序鍊錶
struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...
合併兩個排序鍊錶
描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...
合併兩個排序鍊錶
問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...