热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数组中仅出现一次的两个数异或

**题意:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次,请写程序找出这两个出现一次的数字。要求时间复杂度是O(n),空

/**
题意:
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次,
请写程序找出这两个出现一次的数字。
要求时间复杂度是O(n),空间复杂度是O(1).解题思路:用异或操作
偶数个的异或起来为0,所以最后异或的答案等于所求两数异或和
这两个数不一样那么异或结果一定至少有一位为1。表示num1该位为1,num2该位为0。
将该位为1的数全部异或起来,得到的结果是num1。
这是因为除了num1之外,剩下的每个数(当然不包括num2)一定有偶数个。
同理将该位为0的数全部异或起来,得到的结果是num2。
*/
#include unsigned int FindFirstBitIs1(int num)
{int indexBit &#61; 0;while (((num & 1) &#61;&#61; 0) && (indexBit <32)){num &#61; num >> 1;&#43;&#43; indexBit;}return indexBit;
}bool IsBit1(int num, unsigned int indexBit)
{num &#61; num >> indexBit;return (num & 1);
}void FindNumsAppearOnce(int data[], int length, int &num1, int &num2)
{if (length <2)///即第一个和第二个数return;int resultExclusiveOR &#61; 0;for (int i &#61; 0; i }int main()
{int n,i,x,y;int a[99999];while(scanf("%d",&n)!&#61;EOF){for(i&#61;0;i}



推荐阅读
author-avatar
PHP》小魏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有