满足进阶时空复杂度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;
    }
}