题目描述:
136.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
测试程序:
#include <stdio.h>
int singleNumber(int* nums, int numsSize)
{
int t=0;
for(int i=0;i<numsSize;i++)
{
for(int j=0;j<numsSize;j++)
{
if(nums[i]==nums[j]&&i!=j)
break;
else if(j==numsSize-1)
{
t=nums[i];
}
}
}
return t;
}
int main()
{
int numsSize=0;
int result=0;
scanf("%d",&numsSize);
int nums[numsSize];
for(int i=0;i<numsSize;i++)
{
scanf("%d",&nums[i]);
}
result=singleNumber(nums, numsSize);
printf("%d",result);
}
收获:
1.编译错误:出返回值写在循环里面,出现多个返回值的情况
2.但是所用时间极长,根据官方给出的题解可以用位运算解题,每个数都和所有数做异或,最后得出的结果即为只出现一次的数字。