面試題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...