文章
58
粉丝
253
获赞
1
访问
22.0k
1.用一个长度为n+1的 初值为0 count数组统计数组A中正整数元素出现的次数 2. 遍历统计完的count数组 找到第一个值为0的下标即可
int func(int A[],int n){
int count[n+1];
for(int i=0;i<n+1;i++)
count[i]=0;
for(int j=0;j<n;j++){
if(count[A[j]]==0){
count[A[j]]++;
}
}
for(intk=1;k<n+1;k++){
if(count[k]==0)
return k;
}
}
时间复杂度O(N) 空间O(N)
评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生的基本设计思想是使用计数数组来统计正整数出现的次数,然后找到第一个未出现的正整数。这个思路是正确的,能够解决问题,但相比标准答案的空间复杂度更高(O(n) vs O(1))。由于题目要求"在时间上尽可能高效的算法",虽然时间复杂度都是O(n),但空间效率较低,因此扣1分。
(2)得分及理由(满分8分)
得分:6分
理由:学生的代码实现基本正确,但有以下几个问题:
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n)和空间复杂度为O(n),分析准确。
题目总分:2+6+2=10分
登录后发布评论
暂无评论,来抢沙发