“异或”处理数组的相关算法的面试题
来源:互联网 发布:it618淘宝客导购源码 编辑:程序博客网 时间:2024/06/05 22:31
例1,寻找数组中丢失的数。。。
有一组数字,从1到n减少了一个数,顺序也被打乱了,放在一个n-1的数组里,请找出丢失的数字。
解题思路:1,对1-n个数做异或运算,得到XOR = 1^2^3^4….^n。
2, 用XOR与当前n-1数组的所有元素依次取异或:
因为XOR中与当前数字相同的数,都在异或运算中抵消掉了,最终剩下的,就是我们要找的那个丢失的数。
void FindNumsAppearOnce(int data[], int length, int &num1, int &num2){ if (length < 2) return; int resultExclusiveOR = 0; for (int i = 0; i < length; ++ i) resultExclusiveOR ^= data[i]; unsigned int indexOf1 = FindFirstBitIs1(resultExclusiveOR); num1 = num2 = 0; for (int j = 0; j < length; ++ j) { if(IsBit1(data[j], indexOf1)) num1 ^= data[j]; else num2 ^= data[j]; }}unsigned int FindFirstBitIs1(int num){ int indexBit = 0; while (((num & 1) == 0) && (indexBit < 32)) { num = num >> 1; ++ indexBit; } return indexBit;}bool IsBit1(int num, unsigned int indexBit){ num = num >> indexBit; return (num & 1); }
0 0
- “异或”处理数组的相关算法的面试题
- 数组相关的面试题
- 利用“异或”处理数组的相关算法的几个例子
- 利用“异或”处理数组的相关算法的几个例子
- 【面试题】算法相关
- Handler相关的面试题
- .NET相关的面试题
- 随机数的相关面试题
- String相关的面试题
- EJB相关的面试题
- Activity相关的面试题
- 单链表的相关面试题
- Handler相关的面试题
- 继承相关的面试题
- 随机数的相关面试题
- 框架相关的面试题
- 算法面试题之数组中重复的数字
- java面试题:数组的常用算法实现
- PowerDesigner模型
- HDU 5023 A Corrupt Mayor's Performance Art (计算几何、血坑)
- 2015秋季校园招聘小记+公历2015年小记
- Java进制转换, 数据类型, 运算符
- java基本类介绍
- “异或”处理数组的相关算法的面试题
- 欢迎使用CSDN-markdown编辑器
- [leetcode190]Reverse Bits
- hdu 1044 Collect More Jewels(BFS+DFS)
- Java List接口
- HDU 1078 FatMouse and Cheese
- 线程池详解
- 1 - 统计学习方法概论
- 数据库里写了很多存储过程,想用SQL语句查出哪些存储过程包含字段(如:user_id)