文章
15
粉丝
0
获赞
1
访问
3.5k
1.由于相同元素一定相邻,故可以比较相邻两个元素的值和自己是否相同,通过遍历一趟数组,分别记录前i-1和后i+1元素的值
2.
int only_one_ele(int A[],int n){
//A为数组,n为数组长度
for (int i = 1; i < n-1; ++i) {
if(A[i] != A[i-1] && A[i] != A[i+1]){
return A[i]; //遍历A列表,从中筛选出不同的两个元素
}
}
//排除端点情况
if(A[n-1] != A[n]){
return A[n];
} else if(A[0] != A[1]){
return A[0];
}
return 0;//表示没找到
}
3.由于只遍历了一次数组,故时间复杂度为O(n)
评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生的设计思想提到了比较相邻元素的值,但表述不够清晰,没有明确指出遍历坐标为偶数的元素。思路基本正确,但不够精确。
(2)得分及理由(满分8分)
得分:6分
理由:学生的代码实现基本正确,但存在以下问题:
i < n-1,但数组索引从1开始,可能会漏掉第一个元素的检查。A[n-1] != A[n]会导致数组越界,因为A[n]是无效的。尽管存在这些问题,但整体思路正确,能够找到目标元素。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了时间复杂度为O(n),与标准答案一致。
题目总分:2+6+2=10分
登录后发布评论
暂无评论,来抢沙发