删除链表中重复的结点

删除链表中重复的结点

http://www.nowcoder.com/questionTerminal/fc533c45b73a41b0b44ccba763f866ef

题解:虚拟出一个节点node指向原链表的头节点,然后用pre节点指向这个node,cur节点指向原头节点

public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
       if(pHead == null || pHead.next == null){
           return pHead;
       }
        
        ListNode node = new ListNode(0);
        node.next = pHead;
        ListNode pre = node;
        
        ListNode cur = pHead;
        
        while(cur!= null){
            if(cur.next != null && cur.val == cur.next.val){
                int val = cur.val;
                while(cur.next != null  && cur.next.val == val){
                    cur = cur.next; //向右移动指针
                }
                
                cur = cur.next; //向右移动指针 指向不重复的位置节点
                pre.next = cur; //删除链表上重复的指针
            }else{
                pre = pre.next;  //向右移动指针到cur位置
                cur = cur.next;  //向右移动指针到cur位置
            }
        }
        
        return node.next;
    }
}


全部评论

相关推荐

叁六玖:你看,最后不是让你加油,就是鼓励你,还祝福你求职顺利。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务