LeetCode题目:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
解题思路:
方法一:
设置两个循环,逐一的比较,一旦不相同,则累加,一直到累加的数<数组的数-1,这个数就是要找的那个只出现一次的数。
方法二:
异或
相同的数异或为0,A^C ^A=C,所以将数组里面的数逐一异或,最终得到的数就是正解
方法三:
set容器,里面存放的数只出现一次,可以将数组里面的值求和,最终-set求和乘以2,最终答案也是正解。
//主函数块
#include<stdio.h>
int fun(int *a,int nums);
void main()
{
int a[20],n,nums,ans,i;
scanf(