算法学习
Windlinxy
o
展开
-
异或操作的奇妙用法
首先我们认识一下异或操作 ^ 1、异或操作直接对底层二进制数据进行运算,效率很高 2、异或满足交换律 3、某个数异或另一个不相等的数结果为0 4、多个数相互异或如a ^ b ^c运算顺序对结果不影响 5、a ^ a = 0 6、a ^ 0 = a 用法一: 不引入第三变量调换两变量的值 用法二: 求一组数唯一一个出现次数为奇数的数 int eor for(int cur : array){ eor ^= cur; } 最后eor的值就是出现次数为奇数的那个数 这个算法时间复杂度是O(n) ...原创 2021-09-07 21:00:23 · 208 阅读 · 0 评论 -
关于调换两整数变量的值不引入第三变量的方法
在不使用swap函数或者引入第三变量调换两变量值 首先我们认识一下异或操作 ^ 1、异或操作直接对底层二进制数据进行运算,效率很高 2、异或满足交换律 3、某个数异或另一个不相等的数结果为0 4、多个数相互异或如a ^ b ^c运算顺序对结果不影响 5、a ^ a = 0 6、a ^ 0 = a int a = 1; int b = 2; a = a^b; b = a^b; a = a^b; 这里使用的是异或操作: <1>a = a^b; 这里 a 变为 a^b,b不变。 <2>b原创 2021-09-07 20:33:33 · 199 阅读 · 0 评论