文章
123
粉丝
93
获赞
1
访问
16.6k

评分及理由
(1)得分及理由(满分3分)
学生答案的基本设计思想是:创建一个长度为n+1的辅助数组,遍历原数组,将正数作为下标在辅助数组中标记,然后从1开始遍历辅助数组找到第一个未被标记的位置。这种思路是合理的,能够正确解决问题,与标准答案的哈希标记思想本质相同(只是实现方式不同)。因此得3分。
(2)得分及理由(满分8分)
算法实现存在以下问题:
1. 在遍历原数组时,直接使用A[i]作为下标访问B数组,但A[i]可能为负数或大于n的数,这会导致数组越界访问,属于严重逻辑错误。
2. 代码中缺少对非正整数和超出范围正整数的处理,直接使用B[tem]++会产生未定义行为。
3. 虽然memset初始化在第一次识别中出现,但第二次识别中没有,不过这不是关键问题。
由于存在严重的数组越界风险,扣4分。得4分。
(3)得分及理由(满分2分)
学生正确分析了时间复杂度O(n)和空间复杂度O(n),与算法实际复杂度一致。得2分。
题目总分:3+4+2=9分
登录后发布评论
暂无评论,来抢沙发