找出数组中只出现一次的两个数字
2015-11-05 20:04
239 查看
# include <stdio.h> int findFirstOne(int num) { int flag = 1; int count = 0; while (flag) { if (num & flag == 1) break; flag << 1; count++; } return count; } int isOne(int num,int index) { if ((num & (1<<index)) == 1) return 1; else return 0; } void findTwoNumbers(int arr[],int len) { int i = 0; int ret = 0; int result = 0; int num1 = 0; int num2 = 0; for (i = 0;i < len; i++) { result ^= arr[i]; } ret = findFirstOne(result); for (i = 0;i < len;i++) { if (isOne(arr[i],ret) == 1) { num1 ^= arr[i]; } else { num2 ^= arr[i]; } } printf ("%d %d\n",num1,num2); } int main() { int arr[] = {1,2,5,2,4,3,3,1}; int len = sizeof (arr)/sizeof (arr[0]); findTwoNumbers(arr,len); return 0; }
相关文章推荐
- linux笔记:关机重启命令shutdown,系统运行级别init,退出登录logout
- 为什么学习Python
- 【openCV】VS+openCV环境配置
- 二叉排序树第二版(平衡二叉树)
- tableView
- 译:Activity真正“可见”的时间点
- Lua的面向对象封装
- wireshark and omnipeek 过滤器
- C#习题之篮球弹起问题
- kimchi,openstack,ovirt :云计算管理平台相关
- iOS 网络请求测试图
- [置顶] 【android】Android中图形图片及处理相关Api的小总结
- ubuntu12.04
- 多线程02
- NOI2001食物链
- 1003. 我要通过!(20)
- window wamp下xhprof的安装使用
- 证明分布越均匀熵越大
- 黑马程序员--多线程
- Jquery 使用集合