文章
32
粉丝
0
获赞
0
访问
19.0k
(1)用a存放前一个数组所指的数字,并用count记录在a出现次数,对数组进行遍历,若A[i]=a,则count++,若不等于则先判断count是否等于1,若是则return a,若不等于则使a=A[i],count=1。
(2)int IsSole(int[] A,int n){
int a=A[0];
int count=1;
for(int i=1;i<b;i++){
if(A[i]=a)count++;
if(A[i]!=a){
if(count=1)return a;
if(count!=1){
a=A[i];
count=1}
}
}
}
(3)时间复杂度o(n),空间复杂度o(1)
评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生设计思想是遍历数组,用变量a记录当前比较的数字,count记录出现次数。当遇到不同数字时检查count是否为1。这个思路可以解决问题,但相比标准答案的"比较相邻偶数位置元素"的方法效率稍低(需要逐个比较和状态记录),且没有充分利用题目中"相同元素一定相邻"的条件来优化。不过思路本身正确,因此扣1分。
(2)得分及理由(满分8分)
得分:4分
理由:代码存在多处逻辑错误:
1. 循环条件中使用了未定义的变量b,应为n(扣2分)
2. 多个赋值语句使用了单个等号=而不是比较运算符==(扣1分)
3. 缺少对最后一个元素的处理,如果目标元素在数组末尾,函数无法正确返回(扣1分)
4. 代码格式不规范,缺少必要的分号(扣0.5分)
5. 函数缺少返回值,在循环结束后没有return语句(扣0.5分)
虽然算法逻辑框架基本正确,但实现存在严重缺陷。
(3)得分及理由(满分2分)
得分:2分
理由:正确分析了时间复杂度为O(n),虽然空间复杂度分析不是题目要求,但分析正确,不扣分。
题目总分:2+4+2=8分
登录后发布评论
暂无评论,来抢沙发