文章
7
粉丝
0
获赞
0
访问
919
1)index 为数组偏移量 因为相邻元素一定相邻所以 如果这个元素和下个元素相同,index+2,直到匹配到不同为止。
2)
#include <iostream>
using namespace std;
int findSingleElement(const int A[], int n) {
// 检查输入有效性
if (n <= 0) return -1; // 返回-1表示错误
int index = 0;
while (index < n - 1) {
// 如果当前元素与下一个元素相同,跳过这两个元素
if (A[index] == A[index + 1]) {
index += 2;
} else {
// 找到唯一出现一次的元素
return A[index];
}
}
// 如果循环结束还未返回,说明最后一个元素是唯一出现一次的元素
return A[n - 1];
}
3)O(n) 因为数组的最大长度为n
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案一致,都是通过遍历数组并比较相邻元素来找到唯一出现一次的元素。思路清晰且正确。
(2)得分及理由(满分8分)
得分:8分
理由:学生的代码实现与标准答案功能一致,逻辑正确。代码中包含了输入有效性检查,虽然题目未明确要求,但这是一个良好的编程习惯。关键注释清晰,代码结构合理。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),与标准答案一致。
题目总分:3+8+2=13分
登录后发布评论
暂无评论,来抢沙发