文章
8
粉丝
0
获赞
1
访问
588
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分
登录后发布评论
暂无评论,来抢沙发