算法学习打卡计划

leetcode第八十二题—删除排序链表中的重复元素 II

2020-04-20  本文已影响0人  不分享的知识毫无意义

这道题跟删除链表重复元素相比有了一个升级,就是只要是重复的元素一个也不要,要是列表的话,还记得python里的Counter吧,对就是那个做文本分类最常用的,用这个就好了,要不然就用字典计数,很简单的。但是链表嘛,有他自己的特性。

1.题目

原题

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

例子

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

2.解析

这道题的本质还是链表的循环。有几个小points。

3.python代码

class Solution:
    def deleteDuplicates(self, head):
        if head is None or head.next is None:
            return head
        # pre = head
        tmp = ListNode(0)
        new = tmp
        new.next = head
        cur = head

        # list_duplucate = []
        while cur and cur.next:
            if cur.val == cur.next.val:
                val = cur.val
                while cur and cur.val == val:
                    cur = cur.next
                new.next = cur
                # cur.next = cur.next.next
                # cur = cur.next
                # new.next = cur
            else:
                new = new.next
                cur = cur.next
                #在对cur进行操作会对new造成影响
                #只要不对new进行赋值就不必整两个变量出来
        return tmp.next
上一篇下一篇

猜你喜欢

热点阅读