异或
异或即二进制中的简单运算——相同为1,不同为0
在数字运算中,异或运算符号为^
,运算规则如下:
- A^B ^B=A
- 相同为0
- 0与其他数字异或结果即为该数字
上述第一个运算规则即作为LeetCode135题的解题原理。
LeetCode136
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例
输入:nums = [4,1,2,1,2]
输出:4
int singleNumber(int* nums, int numsSize){
int ans = nums[0];
if (numsSize > 1) {
for (int i = 1; i < numsSize; i++) {
ans = ans ^ nums[i]; //异或
}
}
return ans;
}