文章
4
粉丝
0
获赞
0
访问
222
1. 设有3个指针i,j,k分别指向当前元素的前一个元素、当前元素、下一个元素。若前一个元素或后一个元素与当前元素相等,则三个指针同时向后移动一次;若两者与当前元素都不相等,则找到进仅出现一次的元素,即j指向的元素。
2.
int find(SeqList &l) {
int i = 1, j = 2, k = 3;
while (j <= l.length) {
int ie = l.data[i], je = l.data[j];
if (k > l.length) { return je; }
int ke = l.data[k];
if (ie != je && ke != je) return je;
i++;
j++;
k++;
}
return -1;
}
3. 该算法只从头到尾遍历一遍所给序列,时间复杂度为O(n)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想虽然与标准答案不同,但逻辑正确。通过三个指针比较当前元素与前后的关系,能够有效找到仅出现一次的元素。
(2)得分及理由(满分8分)
得分:6分
理由:代码实现基本正确,但存在以下问题:
(3)得分及理由(满分2分)
得分:2分
理由:时间复杂度分析正确,与标准答案一致。
题目总分:3+6+2=11分
登录后发布评论
暂无评论,来抢沙发