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