FOJ-1001-Duplicate Pair
2016-03-19 14:01
483 查看
题目:Duplicate Pair
大意:
有多组测试数据,输入整数n,接着输入n个整数(integers),这些数字几乎都只出现一次,但其中有一个数出现了两次,请输出这个数。
题解:
大数据问题,普通的两个for暴力解决很明显会T,也不能用C++的cin和cout(费时太多)。那么这个问题就转换成如何省时间的一题。
代码:
思路分析:
既然你输入n个数,我就开个n大小的字符数组,数组中所有元素置0,(为省时用memset,所以这里定义的是字符数组,调用
大意:
有多组测试数据,输入整数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),就得到我们要的数了。
相关文章推荐
- LeetCode-70-Climbing Stairs(动态规划)-Easy
- 建议0:不要让main返回0
- ElasticsearchIllegalArgumentException[failed to find analyzer [ik]]问题解决
- ElasticsearchIllegalArgumentException[failed to find analyzer [ik]]问题解决
- hdu1022 Train Problem I 栈的应用
- 利用DataGridView 的 RowPostPaint 事件 和 CellFormatting 事件 对行划线
- 如何理解wait前面需要加while循环
- 1086. Tree Traversals Again (25)【二叉树】——PAT (Advanced Level) Practise
- 70. Climbing Stairs
- UVa 10976 Fractions Again?
- 人工智能各种技术与算法
- 1079. Total Sales of Supply Chain (25)【树+搜索】——PAT (Advanced Level) Practise
- silverlight与游戏中的人工智能---基本追逐与闪躲(二)
- silverlight---游戏中的人工智能之追逐与闪躲
- Aidl实现跨进程通信小例子
- UVa 10976 - Fractions Again?!
- 不能在析构函数里面抛出异常 http://blog.csdn.net/wind19/article/details/8213406
- RAID各级别特性
- HDU5046 Airport dancing links 重复覆盖+二分
- Starting httpd: httpd: apr_sockaddr_info_get() failed for subversion