文章
7
粉丝
0
获赞
0
访问
934
(1)让i从0到n遍历,由于数组元素相同的一定相邻,故只需检查位置为i和i+1是否相同就行了,由题设n一定为奇数,故前0-(n-2)个均符合的话,那么就说明最后一个是单出来的,直接返回这个结果就行了,这个算法遍历的数组n/2向下取整,保证了尽可能高效
(2)
int solve(a,n):{
for(i=0;i<n;i+=2){
if(a[i]!=a[i+1]){return a[i];}
}
return a[n-1]
}
(3) O(n)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,正确描述了遍历偶数位置的元素并与后一个元素比较的方法,且考虑了n为奇数的情况。思路清晰且正确。
(2)得分及理由(满分8分)
得分:7分
理由:学生的代码实现与标准答案基本一致,但存在以下问题:
int solve(a,n):{
应为int solve(int *a, int n) {
,扣1分。(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),与标准答案一致。
题目总分:3+7+2=12分
登录后发布评论
暂无评论,来抢沙发