其他分享
首页 > 其他分享> > 6.3:一个数组中有两种数出现了奇数次,其它数出现了偶数次,怎么找到并打印这两种数

6.3:一个数组中有两种数出现了奇数次,其它数出现了偶数次,怎么找到并打印这两种数

作者:互联网

6.3:一个数组中有两种数出现了奇数次,其它数出现了偶数次,怎么找到并打印这两种数

 

两种数出现奇数次,其它偶数次

1、用eor = 0去逐个异或,最后一定是 eor = a^b, a和b是这个两个出现奇数次的数。偶数次异或为0。

2、a != b, eor != 0;  eor的binary一定有1,利用6.2,提取最右侧的那个1的方法。

   说明a和b的二进制数在这个位置一定是不一样的。

      数组里的所有数分为2类

      第i位置是1的数

      第i位置是0的数

3、在定义eor`去异或这个数组,只挑选第i为是1的数去异或,是0的数不碰。

      eor`会把a拽出来

4、另一个 = eor^eor`

 

标签:并打印,两种,偶数,eor,异或,数次,6.3,数组
来源: https://www.cnblogs.com/yzmarcus/p/16218235.html