剑指56-删除链表中重复的结点

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5


  • 表头比较难处理,为了方便,新建了一个节点作为表头。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
def deleteDuplication(self, pHead):
# 确定pHead不是重复节点
node = ListNode(20190915)
node.next = pHead
p1 = p2 = node

while p1:
p2 = p1.next
while p2 and p2.next and p1.next.val == p2.next.val:
p2 = p2.next
if p2 == p1.next:
p1 = p2 = p1.next
else:
p1.next = p2.next
p2 = p1

return node.next