题目描述:
解题思路:
想要遍历数组,寻找是否有相同的数字进行删除,后来发现过于复杂,说明中写你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 我觉得应该有更加简单的办法,于是搜索后得知可以用亦或运算符来实现:
-
交换律:a ^ b ^ c <=> a ^ c ^ b
-
任何数于0异或为任何数 0 ^ n => n
-
相同的数异或为0: n ^ n => 0
代码实现:
int singleNumber(vector<int>& nums) {
int count = nums.size();
int result=0;
for(int i=0;i<count;i++){
result ^=nums[i];
}
return result;
}