n个整数中有n-1个整数成对,有1个整数落单,找出那个落单的数,零基础接触c语言,啥也不会哇
定义同样大小的标志数组,全部初始化为0.然后从第一个元素开始向后检索是否有相同值,如果有,则将新定义的标志数组中这两个位置都设置为1。然后循环找出下一个标志为0的元素,同样向后搜索相同值。直到找到没有相同值的为止
int main()
{
int n, size;
scanf("%d", &n);
size = 2 * n - 1;
int *num = (int *)calloc(size, sizeof(int));
for (int i = 0; i < size; i++)
scanf("%d", &num[i]);
int one = 0;
for (int i = 0; i < size && !one; i++)
{
one = num[i];
for (int j = 0; j < size; j++)
{
if (i == j)
continue;
if (one == num[j])
{
one = 0;
break;
}
}
}
printf("%d\n", one);
return 0;
}
将2n-1个数异或起来,相同的数会抵消,异或的答案就是要找的数,供参考:
#include <stdio.h>
int main()
{
int t, n, flg = 0;
scanf("%d", &n);
n = 2 * n - 1;
while (n--) {
scanf("%d", &t);
flg ^= t;
}
printf("%d", flg);
return 0;
}