c语言中怎么求落单的数哇(最好有详细解释)

n个整数中有n-1个整数成对,有1个整数落单,找出那个落单的数,零基础接触c语言,啥也不会哇

img

定义同样大小的标志数组,全部初始化为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;
}