时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:3098

解决:906

题目描述:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
输入:
每个测试案例包括两行:
第一行包含一个整数n,表示数组大小。2<=n <= 10^6。
第二行包含n个整数,表示数组元素,元素均为int。
输出:
对应每个测试案例,输出数组中只出现一次的两个数。输出的数字从小到大的顺序。
样例输入:
8
2 4 3 6 3 2 5 5
样例输出:
4 6

思路:

这个题的简单版本是数组里除了一个数之外,其他数都出现了两次,求唯一不同的数。

简单版本的做法是:所有数进行异或操作,最终结果就是这个唯一的数。

对于这个题,仍可利用异或运算的性质来做。方法是:

对所有数进行异或,得到的结果就是两个不同数的异或值X。由于这两个数不同,X的二进制中必定有一位是1,假设仅仅这个位上是1的二进制数为M。

再对所有数按照与M为0或1进行分类,分别异或得到的最终值就是所求的两个不同数。

代码:

#include <stdio.h>

#define N 1000000

int main(void)
{
int n, i;
int a[N];
int m, k1, k2; while (scanf("%d", &n) != EOF)
{
for(i=0; i<n; i++)
scanf("%d", &a[i]); k1 = 0;
for(i=0; i<n; i++)
k1 ^= a[i]; m = 1;
while ((k1&m) == 0)
m <<= 1; k1 = k2 = 0;
for(i=0; i<n; i++)
{
if (((a[i])&m) == 0)
k1 ^= a[i];
else
k2 ^= a[i];
} if (k1 < k2)
printf("%d %d\n", k1, k2);
else
printf("%d %d\n", k2, k1);
} return 0;
}
/**************************************************************
Problem: 1351
User: liangrx06
Language: C
Result: Accepted
Time:790 ms
Memory:4748 kb
****************************************************************/

最新文章

  1. websocket业务代码
  2. sql with as union all
  3. opencv嫁接vlfeat densesift
  4. Oracle数据备份bat
  5. sublime3 配置node build环境
  6. 二叉查找树(二)之 C++的实现
  7. Oracle对索引列同时使用多个聚合函数的性能问题
  8. Oracle 字符集设置
  9. js 循环 常用方法
  10. awk 的 pattern(模式)
  11. 微信公众号接口配置验证URL
  12. Zookeeper Java客户端API的使用
  13. Java 面试知识点解析(一)——基础知识篇
  14. asp.net core 系列之用户认证(authentication)
  15. BBS论坛(十四)
  16. Quickstart: Embed a Power BI Report Server report using an iFrame in SharePoint Server
  17. Android Jetpack 组建介绍(一)——Lifecycler
  18. [转] Python Traceback详解
  19. 关于Java Web应用中的配置部署描述符web.xml
  20. inf 启动

热门文章

  1. 转 : SQL Server数据库优化经验总结
  2. [GraphQL] Reuse Query Fields with GraphQL Fragments
  3. iPhone手机解锁效果&amp;&amp;自定义滚动条&amp;&amp;拖拽--Clone&amp;&amp;窗口拖拽(改变大小/最小化/最大化/还原/关闭)
  4. 倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT-4 获取本机名称和网卡名称
  5. 倍福TwinCAT(贝福Beckhoff)基础教程 松下驱动器试运行提示过速度保护怎么办
  6. 为php5.6.30安装redis扩展
  7. PHP实现查看邮件是否被阅读
  8. HTML to PDF pechkin
  9. UINavigationbar/UINavigationItem/UITabBar/UITabButton/UITabBarItem粑粑粑粑~
  10. ubuntu 安装时出错 sudo apt-get update Reading package lists… Error