劍指offer16 合併兩個排序的鍊錶 題解

2022-09-18 06:24:27 字數 995 閱讀 4985

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

輸入

,
返回值

引入偽頭節點: 由於初始狀態合併鍊錶中無節點,因此迴圈第一輪時無法將節點新增到合併鍊錶中。解決方案:初始化乙個輔助節點 \(dum\) 作為合併鍊錶的偽頭節點,將各節點新增至 \(dum\) 之後。

時間複雜度:o(n)

空間複雜度:o(1)

**/class solution

// 否則將l2指向的結點值鏈結到cur的next指標

else

cur = cur->next;

}//合併剩餘尾部

cur->next = phead1 ? phead1 : phead2;

return dummyhead->next;}};

遞迴終止條件

①如果鍊錶 \(l1\) 和 \(l2\) 均為空,返回空結點

②如果鍊錶 \(l1\) 空 \(l2\) 不空,返回鍊錶 \(l2\) 的頭結點

③如果鍊錶 \(l2\) 空 \(l1\) 空,返回鍊錶 \(l1\) 的頭結點

遞迴函式

如果 \(phead1\) 的所指節點值小於等於 \(phead2\) 所指的結點值,那麼\(phead1\) 後續節點和 \(phead\) 節點繼續遞迴

/**

時間複雜度:o(n)

空間複雜度:o(n)

**/class solution

//否則,頭結點的值為l2.head的值,然後開始遞迴

else }};

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

題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 先對兩個鍊錶用容器進行 然後在容器中對容器內的元素進行排序,最後進行合成鍊錶。struct listnode class solution while phead2 null sort vec.b...

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

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。時間限制 1秒 空間限制 32768k 熱度指數 366049 本題知識點 鍊錶 新建乙個鍊錶,然後兩個煉表頭元素比較,取較小值加入到鍊錶中 做這道題做了很久,雖然很簡單,但總報錯說死迴圈,後來發現原來是指標...

《劍指Offer》16 合併兩個排序的鍊錶

題目 16.合併兩個排序的鍊錶 知識點 魯棒性 題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解題思路 解法一 使用迴圈實現,即首先排除特殊情況 兩個鍊錶同時為空,或其中之一為空 其次同時對兩個鍊錶進行遍歷,將值較小的結點接到輸出鍊錶末尾即可。...