在遍历链表时,可以使用两个指针分别指向前一个节点和当前节点,然后依次比较相邻两个节点的值,如果值相同,则删除当前节点,否则将前一个节点指向当前节点。
示例代码如下:
class Node:
def __init__(self, val):
self.val = val
self.next = None
def deleteDuplicates(head: Node) -> Node:
if not head:
return head
dummy = Node(0)
dummy.next = head
prev = dummy
cur = head
while cur:
# 判断当前节点与下一个节点的值是否相等
if cur.next and cur.val == cur.next.val:
# 找到下一个不相同的节点
while cur.next and cur.val == cur.next.val:
cur = cur.next
# 删除重复节点
prev.next = cur.next
else:
prev = prev.next
cur = cur.next
return dummy.next
使用示例:
head = Node(1)
node1 = Node(2)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(4)
node6 = Node(5)
head.next = node1
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
print(deleteDuplicates(head).val) # 输出 1