删除链表中重复的结点

    xiaoxiao2022-07-13  138

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

    思路:

    1、链表为空

    直接返回头结点

    2、链表不为空:

    1)只有两个节点相等

    2)有两个以上节点相等,如:2-2-2-2-2-2:

    设置一个新的头结点,它的下一个指向头结点;

    设置一个遍历指针,遍历链表;

    遍历链表,若指针当前值与下一个相等,指针指向下一个,直到找到不相等的位置。

    此时新头结点的作用就是代表当前指针的钱一个节点,新头结点直接连接到无相等值位置的指针。

    返回新的链表。

    if not pHead: return None p1=ListNode(-1) p1.next=pHead p2=pHead p3=p1 while(p2 and p2.next): if p2.val ==p2.next.val: val=p2.val while p2 and p2.val==val: p2=p2.next#只要p2和下一个值相等,指针就前进 p3.next=p2 else: p2=p2.next p3=p3.next return p1.next

     

    最新回复(0)