思路:
1、如果是重复的留一个,可以考虑在遍历过程中判断与下一个节点是否相同,如果相同一直跳过
2、如果是重复的都要删除,那需要借助数据结构,统计节点出现次数,如果重复的,见到就直接跳过
- 统计出现个数
- 全放到列表中,去重后再连接
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pHead ListNode类
# @return ListNode类
#
class Solution:
def deleteDuplication(self , pHead: ListNode) -> ListNode:
# write code here
if not pHead:
return
h = ListNode(-1)
pre = h
p = pHead
dic = []
while p:
dic.append(p.val)
p = p.next
p = pHead
while p:
#while p.next and p.val == p.next.val:
if dic.count(p.val) >= 2:
p = p.next
else:
pre.next = p
pre = pre.next
p = p.next
pre.next = None
return h.next