題目要求:合并兩個單向已排序的鏈表l1和l2,返回新的鏈表。
思路:該問題跟合并兩個已排序的數組很像,合并兩個已排序的數組是使用三個指針,從尾向頭掃描,不斷加入到數組中。而單向鏈表不能從尾往頭加,這時候考慮也用兩個“指針”從頭往尾掃,加入到第三個新的鏈表中。
起始狀態:比較l1的頭結點和l2的頭結點的大小,讓較小的(假如為l1)作為新的鏈表的頭節點,然后再遞歸地比較l1.next和l2的“頭節點”(l1.next可以看做一個新的鏈表,它去除了剛剛加入新鏈表的數)直到兩個鏈表中有一個為空鏈表為止。
還需要考慮特殊情況,當l1為空或者l2為空時,剩下的另一個鏈表的數據可以直接追加到新鏈表中,不需要再比較。
最終返回新鏈表的頭節點即可。
代碼如下。