您的位置:首页 > 大数据 > 人工智能

FOJ-1001-Duplicate Pair

2016-03-21 16:54 411 查看
题目:Duplicate Pair

大意:

有多组测试数据,输入整数n,接着输入n个整数(integers),这些数字几乎都只出现一次,但其中有一个数出现了两次,请输出这个数。

题解:

大数据问题,普通的两个for暴力解决很明显会T,也不能用C++的cin和cout(费时太多)。那么这个问题就转换成如何省时间的一题。

代码:

#include <stdio.h>
#include <string.h>
#define N 1000010

char a
;  //定义字符数组,用到memset,节省时间

int main(void)
{
int n;
int i;
int j;
while(scanf("%d", &n) != EOF)
{
memset(a, 0, n);
for(i = 0; i < n; i++)
{
scanf("%d", &j);
if(a[j] == 0) a[j] = 1;
else printf("%d\n", j);
}
}
return 0;
}

思路分析:

既然你输入n个数,我就开个n大小的字符数组,数组中所有元素置0,(为省时用memset,所以这里定义的是字符数组,调用
#include<string.h>
)你输入的每一个数比如说j对应的字符数组的成员是
a[j]
a[j]
代表的就是你的状态,输入j以后如果之前没有和j相同的数(也就是
a[j]==0
),将其值置为1,代表这个数出现了;如果这个数之前出现了(
a[j]==1
),就得到我们要的数了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: