文章
7
粉丝
0
获赞
0
访问
493
(1)设置指针i,遍历整个数组A,若A[i]的值不等于A[i+1],则A[i]是指出现一次的那个元素。若遍历到最后一个元素仍未找到符合条件的元素,只出现一次的元素即为最后一个元素。
(2)int function(int A[], int numsize){
bool find = false; int ans =0;
for(int I=0;i<numsize-1;i++){
if(A[i]==A[i+1]){
find = true;
ans = A[i];
}
}
if(find==false){
ans = A[numsize-1];
}
return ans;
}
(3)因为只需要遍历一次数组,所以该算法的时间复杂度是O(n)。
评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生的设计思想基本正确,但表述不够严谨。题目要求相同元素一定相邻,因此只需遍历偶数位置的元素即可,但学生没有明确指出这一点。此外,学生的思路与标准答案的逻辑一致,但表述不够清晰。
(2)得分及理由(满分8分)
得分:5分
理由:学生的代码实现存在逻辑错误。代码中遍历所有元素,但判断条件是如果相邻元素相等则记录该元素,这与题目要求不符(题目要求找出仅出现一次的元素)。此外,代码中的变量命名不规范(如`find`和`ans`的用途不明确),且逻辑错误导致无法正确找到目标元素。关键注释缺失。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),与标准答案一致。
题目总分:2+5+2=9分
登录后发布评论
暂无评论,来抢沙发