- Single Number
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
python
class Solution:
def singleNumber(self, nums: List[int]) -> int:
res = 0
for i in nums:
res = res^i
return res
java:
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
for(int i:nums)
res ^=i;
return res;
}
}
& : 按位与操作, 只有 1&1 为 1, 其它情况为 0. 可用于进位运算
| : 按位或操作 , 只有 0|0 为0 ,其他情况为1
~ : 逐位取反
^ : 异或, 相同为 0 ,相异为 1 . 可用于加操作 (不包括进位项 )
<< : 左移操作, 2的幂有关 >> : 右移操作, 2的幂有关
交换律:a ^ b ^ c <=> a ^ c ^ b
任何数于0异或为任何数 0 ^ n =n
相同的数异或为0: n ^ n = 0
两个数相同就会为0