删除有序链表中重复的元素-II-牛客
思路
- 直接比较删除
升序链表,重复的节点都连在一起,容易找到到重复的节点,然后将所有的连续相同的节点都跳过,连接不相同的第一个节点
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @return ListNode类
#
class Solution:
def deleteDuplicates(self , head: ListNode) -> ListNode:
#1、直接删除
if head==None:
return None
#虚拟头结点
res=ListNode(-1)
#在链表前加一个表头
res.next=head
cur=res
while cur.next and cur.next.next:
#遇到相邻两个节点值相同
if cur.next.val == cur.next.next.val:
tmp=cur.next.val
#将相同的都跳过
while cur.next != None and cur.next.val==tmp:
cur.next=cur.next.next
else:
cur=cur.next
#返回时去掉虚拟表头
return res.next