给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
要求:满足线性时间复杂度,不使用额外空间。
个人解题思路:使用按位异或运算,按位异或的3个特点:
(1) 0 ^ 0=0,0^1=1 ( 0异或任何数=任何数)
(2) 1 ^ 0=1,1^1=0 (1异或任何数=任何数取反)
(3) 任何数异或自己=把自己置0
class SearchSingleNumber {
public int singleNumber(int[] nums) {
int result=0;
for(int i=0;i<nums.length;i++){
result=result^nums[i];
}
return result;
}
}