文章
246
粉丝
0
获赞
15
访问
27.2k

评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:学生答案的基本思路是从后向前遍历,维护最大值和最小值,这符合题目要求的高效性。但是存在以下问题:
1. 对于最后一个元素,res[n-1]应该是A[n-1]本身,而不是A[n-1]*A[n-1],因为题目要求是A[i]与A[j]的乘积最大值,其中i≤j,当i=j时就是A[i]本身
2. 算法逻辑不够完善,只考虑了A[i]≥0时乘以max,A[i]<0时乘以min,但实际可能的情况更复杂,比如A[i]为负数时可能乘以min得到正数乘积,但还需要考虑其他情况
(2)得分及理由(满分7分)
得分:4分
理由:代码实现基本正确,从后向前遍历的思路是对的,但存在逻辑错误:
1. res[n-1]的初始化错误,应该是A[n-1]而不是A[n-1]*A[n-1]
2. 更新max和min的逻辑应该在计算res[i]之后,而不是之前
3. 计算res[i]的逻辑不够完善,没有考虑所有可能的情况
代码结构清晰,变量命名合理,但核心算法逻辑有缺陷
(3)得分及理由(满分2分)
得分:2分
理由:时间复杂度和空间复杂度的分析完全正确。算法的时间复杂度确实是O(n),空间复杂度是O(1),只使用了常数个辅助变量。
题目总分:2+4+2=8分
登录后发布评论
暂无评论,来抢沙发