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

删除链表中重复的结点

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


全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 20:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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