给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
题目理解:链表,重复数字,删除节点,只留不同数字,新链表
- 解题工具:
- 两指针:记录前一个节点pre、当前节点cur
- 节点比较:节点值是否相同;节点是否相同
- 一次顺序遍历
- 节点比较
- 虚拟头节点,用于返回新链表
- 指针作用,pre为新链表节点,pre.next指向计划连接的节点。cur遍历原链表。
- 判断逻辑: while 遍历链表
#节点值是否相等。
【cur指针】若相等则将cur移到最后一个重复位置
while cur.next and cur.val == cur.next.val:
cur = cur.next
# 节点是否相等。
【Pre、cur指针】 若相等说明之间准备移动到的节点,就是当前节点。也就是cur不曾因数值重复移动过,则将该节点加入新链表。不相等则改变计划移动到的节点。
if pre.next == cur:
pre = pre.next
else:
pre.next = cur.next