文章
56
粉丝
0
获赞
0
访问
1.9k
评分及理由
(1)得分及理由(满分4分)
学生答案的基本设计思想是使用一个辅助数组B记录每个元素出现的次数,然后检查是否有元素的出现次数超过n/2。这种方法虽然正确,但并不是题目要求的“尽可能高效的算法”,因为标准答案使用了更优的Boyer-Moore投票算法,其空间复杂度为O(1),而学生的方法空间复杂度为O(n)。但题目要求是“尽可能高效”,而学生的算法在时间上是高效的(O(n)),但空间上不是最优。然而,题目并没有明确要求空间效率,且学生的思路正确,因此不扣分。得4分。
(2)得分及理由(满分7分)
学生实现了基于计数的方法,代码逻辑正确,能够正确找出主元素或返回-1。但代码中存在一个小问题:在第一个循环中初始化B数组为0,但实际在Java中int数组默认初始化为0,因此该步骤可以省略,但这不是逻辑错误。另外,学生添加了条件判断 (3)得分及理由(满分2分) 学生正确分析了时间复杂度为O(n)和空间复杂度为O(n),与所实现的算法一致。得2分。 题目总分:4+7+2=13分if (A[i] >= 0 && A[i] < n)
,这是对题目条件的冗余检查(因为题目已说明0≤a_i
登录后发布评论
暂无评论,来抢沙发