美文网首页
python实现leetcode之82. 删除排序链表中的重复元

python实现leetcode之82. 删除排序链表中的重复元

作者: 深圳都这么冷 | 来源:发表于2021-09-14 22:25 被阅读0次

    解题思路

    每个节点有三种情况
    1.前面有重复的节点
    2.后面有重复的节点
    3.前后都没有重复的节点

    只保留第三种!

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

    代码

    # 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:
            ans = tail = ListNode(0)
            dup_val = None
            while head:
                if head.val == dup_val:  # 前面有重复
                    head = head.next
                    continue
                elif head.next and head.val == head.next.val:  # 后面有重复
                    dup_val = head.val
                    head = head.next
                    continue
                else:  # 前后都没有重复
                    tmp = head.next
                    # 插入返回值尾部
                    tail.next = head
                    tail = head
                    head = tmp
            tail.next = None
            return ans.next
    
    效果图

    相关文章

      网友评论

          本文标题:python实现leetcode之82. 删除排序链表中的重复元

          本文链接:https://www.haomeiwen.com/subject/deehgltx.html