文章
7
粉丝
0
获赞
0
访问
421
1. 基本设计思想:使用双指针的方法,两个指针p,q初始值都为0,在遍历的过程中先移动指针q,若出现A[p]!=A[q],则判断q-p==1是否成立,若成立者返回A[p],否则令p=q,然后继续移动指针q。重复上述操作指导找到目标元素。
2.实现代码如下:
int solution(int A[],int n){
int p=0,q=0;
for(;q<n;q++){
if(A[p]!=A[q])
if(q-p==1) return A[p];
else p=q;
}
return A[q];//目标元素是最后一个元素
}
3.时间复杂度为O(n)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想虽然与标准答案不同,但同样是正确的。双指针的方法可以有效地找到仅出现一次的元素,且逻辑清晰。
(2)得分及理由(满分8分)
得分:7分
理由:代码实现基本正确,但存在一个逻辑错误。在最后一行返回return A[q];
时,q
的值已经超出了数组的边界(因为q
在循环结束后为n
),应该改为return A[p];
或return A[n-1];
。此外,代码注释较少,但关键逻辑清晰。
(3)得分及理由(满分2分)
得分:2分
理由:时间复杂度分析正确,为O(n),与标准答案一致。
题目总分:3+7+2=12分
登录后发布评论
暂无评论,来抢沙发