输入一个数列和数列的元素个数,其中有一个数字,其余数字会出现两次,找出那个唯一的数字
输入实例
3
2 1 2
输出
1
输入实例
7
5 4 4 3 5 3 8
输出
8
法一:
时间复杂度:O(numsSize*numsSize)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int j = 0;
int numsSize;
scanf("%d", &numsSize);
int* nums = (int*)malloc(numsSize * sizeof(int));
for (int i = 0;i < numsSize;i++)
scanf("%d", nums + i);
for (int i = 0;i < numsSize;i++)
{
int count = 0;
for (j = 0;j < numsSize;j++)
{
if (nums[j] == nums[i])
count++;
}
if (count == 1)
printf("%d", nums[i]);
}
return 0;
}
法二:
时间复杂度:O(numsSize)
//^异或,a^a=0 a^0=a
int numsSize;
scanf("%d", &numsSize);
int* nums = (int*)malloc(numsSize * sizeof(int));
for (int i = 0;i < numsSize;i++)
scanf_s("%d", nums + i);
int n = nums[0];
for (int i = 1;i < numsSize;i++)
{
n ^= nums[i];
}
printf("%d", n);