删除链表中重复的节点(python)

一,题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

二,分析

首先,我们做了个头节点叫result,并让头指针result.next指向头节点
然后又做了两个指针,res和tmp,让他们分别指向头节点和链表首字母

代码:

result=ListNode(0)

res=result

result.next=pHead

tmp=pHead

 

 

 

接下来比较tmp指向的值 和 tmp.next指向的值 的大小
如果不一样,让res指向的值 的 next指针 指向tmp指向的值,并让res往后跳一格

每次比较完不管结果,都要让tmp往后无条件跳一格

代码:

while tmp and tmp.next:

    if tmp.val!=tmp.next.val:

        res.next=tmp

        res=res.next

    tmp=tmp.next

        

 

 


如果tmp和tmp.next的值一样,就让tmp往后跳一格,

然后再无条件跳一格,res不动

代码:

while tmp and tmp.next:

     if tmp.val==tmp.next.val:

        while tmp and tmp.val==tmp.next.val:

            tmp=tmp.next

    tmp=tmp.next

    

 

 

最后,让res.next指向最后的tmp

代码:

    res.next=tmp

return result.next

 

 

 

三,完整代码

 

 

posted @ 2020-06-23 15:40  董不耀  阅读(89)  评论(0编辑  收藏  举报