题解 | #删除链表中重复的结点#

删除链表中重复的结点

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

import java.util.*;
/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead) {
        /*
            1. 增加一个哨兵节点在头部,遍历链表,p指向已处理的节点,p_next表示p的下一个节点
            2. flag表示p_next的值是否有重复,如果重复,则循环把p_next指向最后一个重复的节点,
               并将p.next设置为p_next.next,将p_next指针下移
            3. 如果p_next不重复(flag==false),则将p和p_next指针下移,重置flag为false
         */
        if (pHead==null || pHead.next==null)
            return pHead;
        boolean flag = false;
        ListNode head = new ListNode(0);
        head.next = pHead;
        ListNode p = head, p_next = head.next;
        while (p_next!=null){                
            while (p_next.next!=null && p_next.val==p_next.next.val){
                p_next = p_next.next;
                flag = true;
            }
            if (flag==true)
                p.next = p_next.next;
            else
                p = p.next;
            p_next = p.next;
            flag=false;
        }
        return head.next;
    }
}

全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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