文章

25

粉丝

0

获赞

0

访问

2.0k

头像
2025 年 5 月第 1 次 408 月考试卷 - 第41题回答
数据结构
发布于2025年9月21日 16:42
阅读数 123

(1)从a_0开始,遍历数组偶数下标的元素,由于相同的元素一定相邻,所以如果这个元素出现了两次,下一个元素和当前元素是相等的;如果只出现一次,和后面一个元素不会相等。因此一次遍历即可找出这个只出现一次的元素。

(2)int getSingleNum(int a[], int n){

//a 为给定数组,n为数组长度

        for(int i = 0; i < n; i+=2){

              if (a[i] != a[i+1])  return a[i];

}

        return -1;  //若输入数据合法,不会执行到这一步

}

(3)遍历一次数组,时间复杂度为O(n),n为数组长度。


评分及理由

(1)得分及理由(满分3分)

学生答案正确描述了算法的基本设计思想:遍历偶数下标元素,与后一个元素比较,若不相等则返回当前元素。该思路与标准答案一致,得3分。

(2)得分及理由(满分8分)

学生代码整体正确,但存在一处逻辑错误:循环条件为i < n,当in-1(最后一个元素)时,a[i+1]会越界访问。标准答案中循环条件为i < n-1,避免了越界。此外,学生代码未处理目标元素是最后一个元素的情况(例如输入数组长度为奇数且目标在末尾),但标准答案通过return A[n-1]处理了该情况。学生代码返回-1,但题目要求返回目标元素,因此存在缺陷。扣2分(逻辑错误)。代码注释和结构合理,其余部分正确,得6分。

(3)得分及理由(满分2分)

学生正确分析了时间复杂度为O(n),与标准答案一致,得2分。

题目总分:3+6+2=11分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发