劍指offer題17 合併兩個排序的鍊錶

2021-08-15 08:06:12 字數 534 閱讀 9242

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。鍊錶結點定義如下:

struct listnode ;
1.當我們得到兩個鍊錶中的值較小的頭結點並把它鏈結到已經合併的鍊錶之後,兩個鍊錶剩餘的結點依然是排序的,因此合併的步驟和之前步驟是一樣的。這就是典型的遞迴的過程。

2.在本題中一旦輸入空的鍊錶就會引入空的指標,因此我們要對空鍊錶單獨處理。

listnode* merge(listnode* phead1, listnode* phead2)  else

if (phead2 ==

null)

listnode* pmergedhead =

null;

if (phead1->m_nvalue < phead2->m_nvalue) else

return pmergedhead;

}

劍指offer 合併兩個排序列表

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。簡單,但是有三種方法 1.建立乙個額外鍊錶 最好理解,但是浪費空間 public listnode merge listnode list1,listnode list2 else if p2 nu...

劍指offer 合併兩個鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...

劍指Offer17合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這個兩個鍊錶並使得新煉表中的結點仍然是按照遞增排序的。這個題目很簡單,下面直接看 我用兩種方式實現了題目的要求,遞迴的方法是書上寫的,很短小,也很經典。非遞迴方法有大的冗餘。遞迴 listnode merge listnode list1,listnode list...