劍指offer56 刪除鍊錶中重複的結點

2021-09-11 07:34:21 字數 1573 閱讀 3664

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

:def

deleteduplication

(self, phead)

:# write code here

ifnot phead:

return

none

res = listnode(phead.val -1)

res.

next

= phead

p, q = res, phead

while q and q.

next

:if q.val != q.

next

.val:

p = q

q = q.

next

else

:while q.

next

and q.val == q.

next

.val:

q = q.

next

q = q.

next

p.next

= q return res.

next

遞迴求解:
# -*- coding:utf-8 -*-

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

deleteduplication

(self, phead)

:# write code here

ifnot phead or

not phead.

next

:return phead

if phead.val != phead.

next

.val:

phead.

next

= self.deleteduplication(phead.

next

)else

:# 如果相等那麼找第乙個不等的節點

node = phead.

next

while node and node.val == phead.val:

node = node.

next

return self.deleteduplication(node)

return phead

劍指offer56 刪除鍊錶中的重複結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 思路1 用乙個set來記錄重複的結點 class solution listnode new phead newlistnode 1 這個操作主...

劍指offer56 刪除鍊錶中重複的節點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 注意如果是頭結點的判斷 另外,每次 next的時候都需要判斷當前節點是否為空 struct listnode class solution 如果...

劍指offer 56 刪除有序鍊錶中的重複結點

56.刪除有序鍊錶中的重複結點 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 借助輔助頭結點,可避免單獨討論頭結點的情況。設定兩個結點 pre 和 cur,當 cur 和 cur.next ...