文章
1
粉丝
0
获赞
0
访问
58
1,枚举遍历一遍,当前位置的元素判断当前位置的元素i是否与下一个元素i+1相等,如果相等,直接跳到i+2,如果不相等这就是答案,直接记录答案,跳出循环。
int getOnceNum(int a[]){
int ans = -1;
for(int i = 0; i<n;){
if(a[i]==a[i+1])i=i+2;
else {
ans = a[i];
break;
}
}
return ans;
}
单层枚举遍历,平均时间复杂度O(n),空间复杂度O(1)。
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,即通过遍历数组并比较相邻元素来找到仅出现一次的元素。思路正确,不扣分。
(2)得分及理由(满分8分)
得分:6分
理由:学生的代码实现基本正确,但存在以下逻辑错误:
n
,导致代码无法正确运行。i<n
可能导致数组越界,因为循环内访问了a[i+1]
。扣分:2分(每处逻辑错误扣1分)。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),与标准答案一致,不扣分。
题目总分:3+6+2=11分
登录后发布评论
暂无评论,来抢沙发