劍指offer 學習筆記 合併兩個排序的鍊錶

2021-10-03 07:33:39 字數 902 閱讀 2262

面試題25:合併兩個排序的鍊錶。輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。鍊錶節點定義如下:

struct listnode 

;

當鍊表1的頭節點的值小於鍊錶2的頭節點的值時,那麼鍊錶1的頭節點是合併後鍊錶的頭節點。之後在鍊錶中的節點還是排序的,因此之後的合併過程和前面是一樣的,我們可以遞迴地解決這個問題:

#include

#include

using

namespace std;

struct listnode

;listnode*

merge

(listnode* phead1, listnode* phead2)

else

if(phead2 ==

nullptr

) listnode* phead =

nullptr;if

(phead1-

>m_nvalue < phead2-

>m_nvalue)

else

return phead;

}void

addtotail

(listnode*

* phead,

int value)

else

pnode-

>m_pnext = pnew;

// 將鍊錶末尾元素的指標指向新節點}}

void

printlistreversingly_iteratively

(listnode* phead)

while

(!nodes.

empty()

)}intmain()

劍指offer 合併兩個鍊錶

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

劍指offer 合併兩個排序的陣列

1 題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。2 思路 運用遞迴 如果第乙個鍊錶為空,則直接返回第二個鍊錶 如果第二個鍊錶為空,則直接返回第乙個鍊錶 如果第乙個鍊錶中的值小於第二個鍊錶中的值,則將乙個鍊錶中的相應元素插入鍊錶 如果第乙個鍊錶...

劍指offer 合併兩個排序列表

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