牛客网刷题之删除链表中重复的结点

来源:互联网 发布:淘宝闹鬼的古着店 编辑:程序博客网 时间:2024/05/29 18:02

题目描述:

这里写图片描述

解题思路:

从头遍历链表,如果出现值相等的就表示该结点重复,就直接指向下一结点,当热,下一结点也可能相同,故而是指向下一不相同的结点。不过需要注意的是,头结点也可能与后面的结点相同,所以,我们要设置一个临时头结点,并让临时头结点指向当前头结点(最终返回需要是临时头结点的下一结点)。

题解:

public ListNode deleteDuplication(ListNode pHead) {        if(pHead == null){            return null;        }        ListNode tmpRoot = new ListNode(-1);        tmpRoot.next = pHead;        ListNode prevNode = tmpRoot;        ListNode curNode = pHead;        while(curNode != null && curNode.next != null){            if(curNode.val == curNode.next.val){                while(curNode.next != null && curNode.next.val == curNode.val){                    curNode = curNode.next;                }                prevNode.next = curNode.next;            }else{                prevNode.next = curNode;                prevNode = prevNode.next;            }            curNode = curNode.next;        }        return tmpRoot.next ;    }

ac结果:

这里写图片描述

0 0
原创粉丝点击