给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
//方法1:用两个下标逐一遍历数组,每当数组元素相同计数器加1,如果计数器等于1将结果返回,否则将计数器重新置为0
int singleNumber(int* nums, int numsSize){
int count = 0;//计数器
for(int i = 0;i < numsSize;i++)
{
for(int j = 0;j<numsSize;j++)
{
if (nums[j] == nums[i])
{
count++;
}
}
if(count == 1)
{
return nums[i];//将只出现一次的数字返回
}
else
{
count = 0;
}
}
return 0;
}
//方法2:利用^的特点,‘^’异或,不相同才为1,相同为0
int singleNumber(int* nums, int numsSize){
int n = nums[0];
for(int i = 1;i < numsSize;i++)
{
n ^= nums[i];//出现两次的数“异或”之后为0,最终剩下那个只出现一次的数字
}
return n;
}