文章

7

粉丝

0

获赞

0

访问

481

头像
【250518年】408计算机统考真题模拟考试 - 第41题答案笔记
数据结构
发布于2025年5月18日 12:11
阅读数 57

计算机考研408统考历年真题及答案解析

1. 基本设计思想:采用双指针的方法,第一个指针p指向一个连续元素块的左边界,第二个指针q指向其右边界,每次让q移动,若出现A[p]!=A[q]的情况,则计算此时的q-p是否等于1,若等于1,者返回nums[q],否则领p=q,继续移动q。重复以上操作直到找到目标元素。

2. 代码实现

int Solution(int A[],int n){
    int p=0,q=0;
    while(q<n){
      if(A[p]!=A[q])//如果两个边界元素不等,则计算[p,q)中元素的个数
         if(p-q==1) return A[p];//个数为1,者A[p]为目标元素
         else p=q; 
       q++;
     }
     //最后一个元素为目标元素的情况
     return A[q];
}

3. 时间复杂度为O(n)


评分及理由

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

得分:3分

理由:学生的设计思想虽然与标准答案不同,但思路正确且能够解决问题。双指针的方法同样可以高效地找到仅出现一次的元素,因此不扣分。

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

得分:6分

理由:代码实现存在逻辑错误。在判断条件中,`if(p-q==1)`应为`if(q-p==1)`,否则逻辑错误。此外,最后返回`A[q]`会导致数组越界,应为`A[p]`或`A[n-1]`。由于代码逻辑错误,扣2分。

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

得分:2分

理由:时间复杂度分析正确,为O(n),与标准答案一致,因此不扣分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发