Find Unique pair in an array with pairs of numbers 在具有数字对的数组中查找唯一对

时间:2023-03-09 17:01:32
Find Unique pair in an array with pairs of numbers 在具有数字对的数组中查找唯一对

给定一个数组,其中每个元素出现两次,除了一对(两个元素)。找到这个唯一对的元素。

输入:
第一行输入包含一个表示测试用例数的整数T。然后T测试用例如下。每个测试用例由两行组成。每个测试用例的第一行包含整数N表示数组的大小,第二行包含N个空格分隔元素。

输出:
对于每个测试用例, 在新行中以增加的顺序打印唯一对。

约束:
1 <= T <= 100 
1 <= N <= 10 3
1 <= A [i] <= 10 3

示例:
输入:


2 2 5 5 6 7 

1 3 4 1

输出:
6 7 
3 4

这个题算是最简单的一个题目,写下我的解题思路。

核心在于怎么找出来这一对元素:假设数组存放在b数组中,因为数组元素的大小是1-1000,所以新建数组a使其大小是1000,初始化为0。

依次将b中元素对应于a中的下标进行递增。如果最终a中是奇数的就是目标答案。只需要遍历一遍就可以了。

下面是具体代码实现:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;//具体执行几次
    scanf("%d",&n);
    int *num=(int*)malloc(sizeof(int)*n);//num数组存放每个数组的大小.
    int i,j;//i是循环变量

    ;i<n;i++)
    {
        scanf("%d\n",&num[i]);//读入第i个数组元素的个数。
        int *b=(int*)malloc(sizeof(int)*num[i]);//分配b数组空间
        ;j<num[i];j++)
            scanf("%d",&b[j]);//依次读入数组元素.
        ]={};//初始化为0
        ;j<num[i];j++)
            a[b[j]-]++;//对数组a,b进行处理。

        ;j<;j++)
        {
            ==)
                printf());
        }
        printf("\n");
    }
    ;
}

如果存在任何不理解,请留言。