一个面试题给出的启示
前段时间看到的一个前端逻辑题
现在有100亿个数字大小为1到10亿的数字,在这100亿个数字里边只有一个数字出现的次数是奇数次的,你用什么方法,找出这个数字呢?
刚开始的思路是参考《编程珠玑》里面的bitmap方法,但是创建一个10亿的bitmap需要大概4G的内存,如果是32为机器,根本不可能完成,后来看到了一个很简单但是又意想不到的方法:
使用“位操作”的异或操作
1、让所有数字和0做异或运算还是数据本省 2、偶数次的数字做异或运算得到是0.a^b^b = a
前段时间看到的一个前端逻辑题
现在有100亿个数字大小为1到10亿的数字,在这100亿个数字里边只有一个数字出现的次数是奇数次的,你用什么方法,找出这个数字呢?
刚开始的思路是参考《编程珠玑》里面的bitmap方法,但是创建一个10亿的bitmap需要大概4G的内存,如果是32为机器,根本不可能完成,后来看到了一个很简单但是又意想不到的方法:
使用“位操作”的异或操作
1、让所有数字和0做异或运算还是数据本省 2、偶数次的数字做异或运算得到是0.a^b^b = a