在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->51.犧牲一點空間的方法,是乙個很重要的思考方向
# -*- coding:utf-8 -*-
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class solution:
def deleteduplication(self, phead):
# write code here
if not phead:
return phead
notreapet = {}
p = phead
while p:
if p.val not in notreapet:
notreapet[p.val] = 1
else:
notreapet[p.val] += 1
p = p.next
temp = newhead = listnode(-1)
p = phead
while p:
if notreapet[p.val] == 1:
temp.next = listnode(p.val)
temp = temp.next
p = p.next
return newhead.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
if not phead:
return phead
newhead = listnode(-1)
newhead.next = phead
last = newhead
cur = phead
while cur and cur.next:
if cur.val != cur.next.val:
cur = cur.next
last = last.next
else:
val = cur.val
while cur and cur.val == val:
cur = cur.next
last.next = cur
return newhead.next
刪除鍊錶中重複的結點
題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。刪除鍊錶中重複的結點 author 過路的守望 public class duplicationnode 新建乙個節點指向頭結點 li...
刪除鍊錶中重複的結點
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 解法一 遞迴 public class listnode public class solution if phead.next.val phe...
刪除鍊錶中重複的結點
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 題目分析 刪除鍊錶中的結點要比較當前結點是否與前面結點和後面結點相同,只有兩個都不同的結點才保留。用pre儲存前乙個節點,cur儲存當前結點,c...