文章
15
粉丝
0
获赞
6
访问
827
(1) 考虑从后往前遍历的同时维护最大值max和最小值min,若A[i]>=0,那么乘以max并放入res[i],若A[i]<0,那么乘以min并放入res[i]。
(2)
C语言代码如下:
#include <stdio.h>
#include <stdlib.h>
void CalMulMax(int A[], int res[], int n) {
int max = A[n - 1], min = A[n - 1];
for (int i = n - 1; i >= 0; i--) {
max = A[i] > max ? A[i] : max;
min = A[i] < min ? A[i] : min;
if (A[i] >= 0)
res[i] = A[i] * max;
else
res[i] = A[i] * min;
}
}
(3) 时间复杂度O(n),空间复杂度O(1)
评分及理由
(1)得分及理由
得分:4分
理由:学生的基本思想与标准答案一致,都是从后往前遍历并维护最大值和最小值,思路正确且表述清晰。
(2)得分及理由
得分:5分
理由:学生的代码实现基本正确,但存在以下问题:
res[n-1]
的值,直接开始循环,会导致最后一个元素的值未被正确计算。res[i]
之前完成,但学生的代码中顺序是正确的,只是缺少初始值的设置。(3)得分及理由
得分:2分
理由:学生正确分析了时间复杂度和空间复杂度,与标准答案一致。
题目总分:4+5+2=11分
登录后发布评论
暂无评论,来抢沙发