力扣热题100之第136题:
先贴代码:
class Solution {
public int singleNumber(int[] nums) {
//异或
int ans = 0;
for(int i = 0; i < nums.length;i++){
ans = ans ^ nums[i];
}
return ans;
}
}
解题思路:
这一题需要我们用到异或来解决,异或的运算法则符合以下:
所以当一个数组只有一个元素是单独的,其他的元素都出现了两次的时候,就符合异或运算的交换律和结合率,例如:1 ^ 2 ^ 2 ^ 3 ^ 3 ^ 4 ^ 4 = 1;2 ^ 1 ^ 3 ^ 2 ^ 3 = 1;
所以我们只需一次遍历数组,每次遍历都异或上这个数,就可以完成解答。