牛客網 Python 刪掉鍊錶中重複的節點

2022-09-11 22:48:31 字數 1076 閱讀 5387

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

鍊錶為排序鍊錶,則可以設定兩個指標前後同時移動,同時判斷後指標的下一節點是否和它相同。

若相同則迴圈刪除,最後把該節點刪掉。

不同則繼續移動。

千補萬補 寫出來的。。。看完討論覺得自己寫的挺棒的哈哈哈,懷疑他們的不會記憶體洩漏嗎。。。

#

-*- coding:utf-8 -*-

#class listnode:

#def __init__(self, x):

#self.val = x

#self.next = none

class

solution:

defdeleteduplication(self, phead):

#write code here

if phead ==none:

return

fast =phead

slow = listnode(phead.val-1)

slow.next =fast

while(fast!=none and fast.next!=none):

if fast.val!=fast.next.val:

slow =slow.next

fast =fast.next

else

:

while(fast != none and fast.next != none and fast.val==fast.next.val):

temp =fast.next

fast.next =temp.next

deltemp

temp =fast

if fast==phead:

phead =fast.next

slow =fast

slow.next =fast.next

deltemp

fast =slow.next

return phead

牛客網 反轉鍊錶

題目 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。這個題目中,head頭結點就存放了元素。思路 public class listnode public class solution listnode pre null listnode next while head null return pr...

牛客網 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前。給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。設定兩個鍊錶,將小於x的結點放在乙個鍊錶中,大於等於x的結點放在另乙個鍊錶中,然後合併兩個鍊...

牛客網練習 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。一看到這道題我就想到了建立兩個鍊錶的想法,乙個鍊錶放小於指定x的所有節點,另乙個放大於等於的...