在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶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的所有節點,另乙個放大於等於的...