文章
7
粉丝
0
获赞
0
访问
891
(1) 因为相同元素一定相邻,所以只需要找到某个不连续出现的数即可。
(2)
int solve(int A[n])
{
for(int i = 0; i < n; i++)
{
if(a[i]==a[i+1]) i++;//这个数字与下一个数字相等,直接跳过该数字
else return a[i]; //该数字不相等的就是所需数
}
}
(3)时间复杂度为O(n),空间复杂度为O(1)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,正确描述了如何利用相邻元素的特性来找到仅出现一次的元素。
(2)得分及理由(满分8分)
得分:6分
理由:学生的代码实现基本正确,但存在以下问题:
int A[]
或int *A
,而不是int A[n]
。i = n - 1
时,a[i+1]
会越界。a[i]
,而参数名为A
。尽管存在这些错误,但核心逻辑是正确的,因此扣2分。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了时间复杂度为O(n),与标准答案一致。
题目总分:3+6+2=11分
登录后发布评论
暂无评论,来抢沙发