文章
5
粉丝
0
获赞
0
访问
384
采用双指针的方式,基于数列相同元素相邻的特性,通过一次遍历找出只出现一次的元素。
int singlefind(int *nums, int numsSize){
if(numsSize==1) return nums[0];
for(int i=0.j=1;j<numsSize;j+=2,i+=2){
if(nums[i]!=nums[j]) return nums[i];
}
return nums[numsSize-1];
}
算法对数组进行了一次遍历,使用常数个辅助空间,时间复杂度为O(n),空间复杂度为O
(1)。
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生采用了双指针的方式,基于数列相同元素相邻的特性,通过一次遍历找出只出现一次的元素。虽然表述与标准答案不同,但思路正确且高效,符合题目要求。
(2)得分及理由(满分8分)
得分:6分
理由:代码逻辑基本正确,但存在以下问题:
for(int i=0.j=1;
中的逗号应为分号),扣1分。(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度为O(n),且空间复杂度为O(1),符合题目要求。
题目总分:3+6+2=11分
登录后发布评论
暂无评论,来抢沙发