文章
63
粉丝
0
获赞
0
访问
3.2k
1.使用辅助数组统计出现过的元素的绝对值次数,索引为元素的值;然后遍历辅助数组中元素索引对应的值大于1的元素,逐个遍历链表,删除多余的元素
2.
public void deleteDup(int n,ListNode *head){
int []a=new int[n];
ListNode *p = head.link;
ListNode *q = head.link;
int count=1;
// 将每个元素出现过的次数统计到辅助数组中
while(p!=null){
if(p.data!=null && a[p.data]==0){
a[abs(p.data)] = count;
}
p = p.link;
}
for(int i=0;i<n;i++){
if(a[i]>1){
ListNode *q = head; bool flag = false;
while(q.link!=null){
if(abs(q.data) == i && !flag){
flag = true;
}else if(abs(q.data) == i && flag){
ListNode *q1 = q.link;q.link = q1.link;
}
}
q = q.link;
}
}
}
3.时间复杂度为O(n^2),空间复杂度为O(n)
评分及理由
(1)得分及理...
登录后发布评论
暂无评论,来抢沙发