文章
27
粉丝
0
获赞
0
访问
1.8k
(1)创建大小为n+1的bool数组used[n+1],used[i]用于记录绝对值为i的数是否存在于链表中。
(2)
struct LinkedNode {
int data;
LinkedNode *next;
};
(3)
void solve()
{
LinkedNode *p = head;
while (head->next != nullptr) {
LinkedNode *q = head->next;
if (used[std::abs(q->data)]) {
p->next = q->next;
delete q;
p = p->next;
continue;
}
used[std::abs(q->data)] = true;
p = p->next;
}
}
(4)时间复杂度O(n),空间复杂度O(1)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的基本设计思想与标准答案一致,都采用了辅助数组记录已出现的绝对值,通过空间换时间的方法实现一趟扫描删除重复结点。思路正确完整。
(2)得分及理由(满分2分)
得分:2分
理由:单链表结点的数据类型定义正确,使用了struct定义,包含data和next指针(虽然命名为next而非link,但这不影响正确性)。
(3)得分及理由(满分8分)
得分:4分
理由:
p = p->next
,这会导致跳过下一个结点的检查,可能漏删结点while (head->next != nullptr)
不合理,应该检查当前处理结点的下一个结...
登录后发布评论
暂无评论,来抢沙发