文章
7
粉丝
21
获赞
0
访问
266
(1)给定a赋初始值为-1用于存储序列中只出现一次的元素,从1到A.length-1遍历序列,使用i记录当前遍历下标,如果存在A[i-1]=!A[i]并且A[i]!=A[i+1],则将a赋值为i,如果a的值不为-1则返回a的值,否则返回0.
(2)
int seek(int *A)
{
int a=-1;
for(int i=1;i<A.length-1;i++){
if(A[i-1]!=A[i]&&A[i]!=A[i+1]){
a=i;
}
}
if(a!=-1)
{
return a;
}else{
return 0;
}
}
(3)时间复杂度为n
评分及理由
(1)得分及理由(满分3分)
得分:1分
理由:学生的设计思想存在逻辑错误。题目要求找出仅出现一次的元素,而学生的思路是通过比较前后元素来判断,但逻辑不够清晰且存在错误(例如,未正确处理边界条件,且返回的是下标而非元素值)。
(2)得分及理由(满分8分)
得分:3分
理由:代码实现存在以下问题:
A.length
在C语言中不合法,应使用参数传递长度。a
而非元素值A[a]
。(3)得分及理由(满分2分)
得分:1分
理由:虽然时间复杂度分析正确(O(n)),但由于算法逻辑错误,实际时间复杂度可能无法正确反映算法效率。
题目总分:1+3+1=5分
登录后发布评论
暂无评论,来抢沙发