文章
13
粉丝
0
获赞
0
访问
774
(1)设计思想:从头到尾遍历整个序列,把当前元素与下一个元素进行对比,因为相同元素一定相邻.若当前元素与下一个元素相同,则跳到下下个元素.直到不同则返回当前元素.若遍历完毕,依旧相等,则单一元素只剩下没有被遍历到的最后一个元素,返回该元素即可.
(2)
int func(int A[], int n){ // 序列为奇数个, n为列表长度
for(int i = 0; i<n; i+=2){
if(A[i]!=A[i+1]} return A[i]; // 如果当前元素与下一个元素不相等,返回当前元素
}
return A[n-1]; // 如果前面元素没找到,则仅有一个元素是最后一个元素
}
(3) 时间复杂度 O(n);
空间复杂度O(1);
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,都是通过遍历偶数位置的元素并与后一个元素比较来找到唯一出现的元素。思路清晰且正确。
(2)得分及理由(满分8分)
得分:7分
理由:学生的代码实现基本正确,但存在一个小错误:在条件判断语句中使用了错误的括号符号“}”而不是“)”,即“if(A[i]!=A[i+1]}”应为“if(A[i]!=A[i+1])”。这是一个语法错误,扣1分。其他部分与标准答案一致,逻辑正确。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),与标准答案一致。此外,学生还额外提到了空间复杂度O(1),虽然题目没有要求,但这是一个正确的补充,不扣分也不加分。
题目总分:3+7+2=12分
登录后发布评论
暂无评论,来抢沙发