文章
2
粉丝
0
获赞
0
访问
110
1.先创建数组Max[n],将A遍历,利用双指针记录Max[i]为A[i]右侧的最大数,再遍历res[i]=A[i]*Max[i]
2. void CallMulMax(int A[], int res[],int n){
int Max[n],j=0;
for(int i=
3.时间和空间复杂度都为O(n)
评分及理由
(1)得分及理由(满分4分)
得分:1分
理由:学生提出的基本思想是"利用双指针记录Max[i]为A[i]右侧的最大数",这个思路只能处理正数情况,但题目示例中包含负数(A[]={1,4,-9,6}),当存在负数时,最大值可能来自当前元素与最小值的乘积。学生没有考虑负数情况,算法思想不完整,存在逻辑缺陷。因此扣3分。
(2)得分及理由(满分7分)
得分:0分
理由:学生提供的代码不完整,只有函数声明和部分变量定义,没有完整的算法实现。代码中缺少关键的双指针逻辑和乘积计算过程,无法判断具体实现是否正确。根据评分标准,代码不完整不能得分。
(3)得分及理由(满分2分)
得分:1分
理由:学生正确指出了时间复杂度为O(n),但空间复杂度分析不准确。学生使用了额外的Max[n]数组,空间复杂度应为O(n),而不是O(1)。因此扣1分。
题目总分:1+0+1=2分
登录后发布评论
暂无评论,来抢沙发