删除链表中重复的结点

删除链表中重复的结点

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef?tpId=13&&tqId=11209&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead == null || pHead.next == null)
            return pHead;
        ListNode newNode = new ListNode(0);  //新建结点,防止头节点被删除
        newNode.next = pHead;
        ListNode tmp = pHead;
        ListNode pre = newNode;  //保存前一个结点
        while(tmp != null && tmp.next != null){
            if(tmp.val == tmp.next.val){
                int val = tmp.val;
                //将跟tmp结点值相等的结点过滤掉
                while(tmp != null && tmp.val == val){
                    tmp = tmp.next;
                }
                //上一个非重复的结点指向下一个非重复的结点
                pre.next = tmp;
            }else{
                pre = tmp;
                tmp = tmp.next;
            }
        }
        return newNode.next;
    }
剑指offer 文章被收录于专栏

为刷过的每一道题都书写一篇题解,便于重复练习~

全部评论

相关推荐

09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务