美文网首页
2019-08-08 剑指 删除链表中重复的节点

2019-08-08 剑指 删除链表中重复的节点

作者: mztkenan | 来源:发表于2019-08-08 12:46 被阅读0次

排序链表删除节点

16min,提交三次,没有调试

1.没有考虑头结点被删除的情况,return 了pHead
2.当else删除了节点后的情况时,pre,cur,nex没有进行更新

class Solution:
    def deleteDuplication(self, pHead):
        dummy=ListNode(None)
        dummy.next=pHead

        pre=dummy
        cur=pHead
        nex=None
        if cur!=None:nex=cur.next

        while nex!=None:
            if nex.val!=cur.val:
                nex=nex.next
                cur=cur.next
                pre=pre.next
            else:
                tmp=cur.val
                while nex!=None and nex.val==tmp:nex=nex.next
                pre.next=nex
                cur=nex
                if nex!=None:nex=nex.next
        return dummy.next # pHead 头结点有可能被删了,所以不能反悔pHead

简化版本,思路一样,少了一个指针。没想到这个却是磕磕绊绊

class Solution2:
    def deleteDuplication(self, pHead):
        dummy=ListNode(None)
        dummy.next=pHead

        pre=dummy
        cur=pHead

        while cur :
            if cur.next.val!=cur.val:
                cur=cur.next
                pre=pre.next
            else:
                while cur.next and cur.next.val==cur.val:cur=cur.next
                cur=cur.next
                pre.next=cur
        return dummy.next # pHead 头结点有可能被删了,所以不能反悔pHe

相关文章

网友评论

      本文标题:2019-08-08 剑指 删除链表中重复的节点

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