題目要求:合并兩個單向已排序的鏈表l1和l2舅锄,返回新的鏈表鞭达。
思路:該問題跟合并兩個已排序的數(shù)組很像,合并兩個已排序的數(shù)組是使用三個指針,從尾向頭掃描畴蹭,不斷加入到數(shù)組中坦仍。而單向鏈表不能從尾往頭加,這時候考慮也用兩個“指針”從頭往尾掃叨襟,加入到第三個新的鏈表中繁扎。
起始狀態(tài):比較l1的頭結(jié)點和l2的頭結(jié)點的大小,讓較小的(假如為l1)作為新的鏈表的頭節(jié)點芹啥,然后再遞歸地比較l1.next和l2的“頭節(jié)點”(l1.next可以看做一個新的鏈表锻离,它去除了剛剛加入新鏈表的數(shù))直到兩個鏈表中有一個為空鏈表為止铺峭。
還需要考慮特殊情況墓怀,當(dāng)l1為空或者l2為空時,剩下的另一個鏈表的數(shù)據(jù)可以直接追加到新鏈表中卫键,不需要再比較傀履。
最終返回新鏈表的頭節(jié)點即可。
代碼如下莉炉。