给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

题目理解:链表,重复数字,删除节点,只留不同数字,新链表

  1. 解题工具:
  • 两指针:记录前一个节点pre、当前节点cur
  • 节点比较:节点值是否相同;节点是否相同
  • 一次顺序遍历
  1. 节点比较
  • 虚拟头节点,用于返回新链表
  • 指针作用,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