文章
87
粉丝
0
获赞
1
访问
19.9k
(1)满足题意的含n个数组中有的最小整数最大为n+1,设置一个大小为n+1的辅助数组,数组下标从0开始,所有元素初始化为0,遍历原数组,若数组元素大于0,将其存储到辅助数组的第i-1号位置中,之后扫描辅助数组,第一个元素内容为0的数组下表+1即为所求。
(2)伪代码如下
int n;cin>>n;int ans=0;
int a[n];int b[n];
for(int i=0;i<n;i++)b[i]=0;//初始化b数组
for(int i=0;i<n;i++){
if(a[i]>0) b[a[i]-1)=a[i];}
for(int i=0;i<n;i++){if(b[i]==0) ans=i+1;}
cout<<ans;
(3)时间与空间复杂度均为o(n)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想正确,虽然与标准答案不同,但思路清晰且可行。通过辅助数组标记存在的正整数,最后扫描辅助数组找到未出现的最小正整数,符合题目要求。
(2)得分及理由(满分8分)
得分:6分
理由:学生的伪代码基本正确,但存在以下问题:
因此扣2分。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了时间复杂度和空间复杂度,均为O(n),与标准答案一致。
题目总分:3+6+2=11分
登录后发布评论
暂无评论,来抢沙发