异或^的妙用
最近在做一些算法题的时候,发现了异或很好使,经常有一些很妙的点子是通过它来实现的。所以特别在这里记录一下,方便下次使用与学习。
两数交换
如果不用这三个参数就实现两数的交换的话,可以使用异或^来实现,代码如下:123456void swap(int &a,int &b) //通过异或交换两者的值{ a =a^b; b= a^b; a = b^a;}
找出0, 1, 2, …, n序列中缺了哪个数
这是LeetCode 268 Missing Number的题,代码如下:1234567int missingNumber(int* nums, int numsSize) { int res = numsSize; for(int i = 0; i < numsSize; i++){ res ^= i ^ nums[i]; } return res;}
暂时只有这两个妙处,下次还有的话,再添加。