文章
14
粉丝
0
获赞
0
访问
1.0k
解:(1)遍历数组,检查当前元素是否与下一个元素相同。由于相同元素必须相邻,可以跳过成对元素。
(2)
int findSingleLinear(const vector<int>& nums) {
for (int i = 0; i < nums.size(); i += 2) { // 每次跳 2 步
if (i + 1 >= nums.size() || nums[i] != nums[i + 1]) {
return nums[i]; // 找到唯一元素
}
}
return -1; // 未找到
}
(3)时间复杂度为O(n)。
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,即通过遍历数组并比较相邻元素来找到唯一出现的元素。思路正确且表述清晰。
(2)得分及理由(满分8分)
得分:7分
理由:学生的代码实现基本正确,但存在以下问题:
vector
而非题目要求的数组,虽然功能正确,但不符合题目要求,扣1分。i + 1 >= nums.size()
),但返回-1
的处理与题目要求不符(题目保证存在唯一元素),虽然不影响功能,但不够严谨,扣1分。(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),与标准答案一致。
题目总分:3+7+2=12分
登录后发布评论
暂无评论,来抢沙发