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

删除链表中重复的结点

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;
    }
}

全部评论

相关推荐

联洲 嵌入式软件开发 总包48w(sp+3档)
点赞 评论 收藏
分享
2024-11-23 22:07
同济大学 Java
贺兰星辰:你这简历完全可以缩到一页,校园工作、自我评价完全可以删了,没人看的;个人技能可以写多点。
点赞 评论 收藏
分享
到我怀里来:教育背景不用写主修课程,还有你写班级排名是什么意思?咋不写寝室排名呢😂要写就写年纪排名。得了那么多奖结果项目经历什么技术细节都不写清楚,把技术细节写清楚,用了什么技术解决了什么问题,“用了python语言、用了SQL语言”,有这样写的?hr一看就知道你是包装的或者比赛的奖是混的,你什么技术细节都不懂。校内职务全删了,什么三好学生、文明寝室这些你写上去干嘛?重复的奖学金你写三次干嘛?自我评价写那么多干嘛?谁想看这些
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务