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

删除链表中重复的结点

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

满足进阶时空复杂度OnOn的解法
public class Solution {
    public ListNode deleteDuplication(ListNode pHead) {
        if(pHead==null) return null;
        int[] a=new int[1000];             //a数组用于记录每个结点值出现的次数
        for(int i=0;i<1000;i++) a[i]=0;
        ListNode p=pHead;
        while(p!=null){          //遍历一遍链表 统计每个值出现的次数
            a[p.val]++;
            p=p.next;
        }
        p=pHead;
        ListNode q=pHead.next;
        if(q==null) return pHead;
        while(q!=null){          //利用p和q在整个链表中删除重复节点
            if(a[q.val]>1){
                p.next=q.next;
                q=p.next;
            }
            else{
                p=p.next;
                q=q.next;
            }
        }
        if(a[pHead.val]>1) pHead=pHead.next;  //最后判断一下头节点需不需要删
        return pHead;
    }
}


全部评论

相关推荐

点赞 评论 收藏
分享
10-25 22:20
门头沟学院 Java
代码飞升_不回私信人...:同学院本,个人亮点去了,打招呼里面的废话也去了,学院本就是路边一条,明天拉满然后该学还是学,小厂也行尽量先有一段实习。另外你的项目描述写的不好,具体列一下可被提问的点,然后量化一下指标或者收益吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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