82:删除排序链表中的重复元素II

问题描述

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例

输入: 1->2->3->3->4->4->5
输出: 1->2->5
输入: 1->1->1->2->3
输出: 2->3

思路

安个头结点,遍历链表,如果重复则跳过即可。
在这里插入图片描述

AC代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        last = ListNode(None)
        last.next = head
        head = last
        last = head
        curs = head.next
        while curs:
            cursor = curs
            count = 0
            while cursor and cursor.val == curs.val:
                count += 1
                cursor = cursor.next
            if count > 1:
                last.next = cursor
                curs = last.next
            else:
                curs = curs.next
                last = last.next
        head = head.next
        return head
发布了333 篇原创文章 · 获赞 22 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41687289/article/details/103696128