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

2021-10-23 14:04:22 字數 1093 閱讀 8317

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

設定乙個res空鍊錶

每次對兩個鍊錶的頭結點的val進行比較,把較小的那個放到res鍊錶中,然後移動頭結點

當某乙個鍊錶遍歷結束時,跳出while,然後把另乙個鍊錶中剩餘的結點一起放在res後面即可

# -*- coding:utf-8 -*-

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:# 返回合併後列表

defmerge

(self, phead1, phead2)

:# write code here

res=listnode(-1

) tmp=res

while

(phead1 and phead2):if

(phead1.val: tmp.

next

=phead1

phead1=phead1.

next

tmp=tmp.

next

else

: tmp.

next

=phead2

phead2=phead2.

next

tmp=tmp.

next

if phead1==

none

: tmp.

next

=phead2

else

: tmp.

next

=phead1

return res.

next

官方題解分為了迭代方法(也就是上述方法),和遞迴方法,遞迴這個東西還是不容易寫出的,也很容易出錯,個人覺得穩妥起見還是採用迭代方法比較好。

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

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m 熱度指數 805773 本題知識點 鍊錶 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。遞迴 function listnode x function merge phead...

劍指Offer NO 16 合併兩個排序的列表

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解題思路 使用遞迴方法 新建乙個鍊錶reslist用作輸出結果,輸入鍊錶為list1和list2,當list1.val反之,reslist list2,reslist.next merge list...

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

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