异或运算的性质
- 0与任意数x异或等于任意数(0^x=x);
- 两个相同的数异或等于0(x^x=0);
- 异或运算满足结合律和交换律;
实例:
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
答案:
int singleNumber(int* nums, int numsSize){
int i = 0;
for(i = 1; i < numsSize; i++)
{
nums[0] ^= nums[i];
}
return nums[0];
}
不同想法,欢迎评论!!!