劍指offer 第56題 刪除鍊錶中重複的結點

2021-09-12 02:30:26 字數 712 閱讀 5254

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

兩個指標,p1,p2,p1記錄當前不重複的最前乙個結點,p2負責探路

如果p2和p2.next不相等,則p2,p1都向後移動乙個

如果相等,p2就移動到重複元素的下一位,p1將next設定為p2

class solution:

def deleteduplication(self, phead):

# write code here

if not phead:

return none

h = listnode(0)

h.next = phead

p1 = h

p2 = phead

while p2 and p2.next:

if p2.next.val != p2.val:

p1 = p1.next

p2 = p2.next

else:

while p2.next.val == p2.val:

p2 = p2.next

if not p2.next:

break

p2 = p2.next

p1.next = p2

return h.next

劍指Offer 程式設計題56 刪除鍊錶中重複的結點

題目 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 牛客網 鏈結 leetcode同題 leetcode82 remove duplicates from sorted list ii le...

劍指offer第14題 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 限制 0 節點個數 5000 思路 新鍵乙個虛擬前驅節點,每次讓當前節點指向我們的上乙個前驅節點。就可以實現反向整個鍊錶了。其實並不難,鍊錶題自己多畫...

劍指Offer 第24題 反轉鍊錶

第24題 反轉鍊錶 題目 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。我的思路 建立鍊錶一般可分為頭插法和尾插法兩種方式,那麼這裡可以通過遍歷原鍊錶採用頭插法來建立新鍊錶。自己的low public class solution return head.next 優雅 public class so...