题目
给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。
备注:
你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?
思路
思路一:最容易想的的方法可能是先排序,再遍历就能找到了。
思路二:但这里要求线性时间复杂度。想到了异或操作。对于一个数A,A^A = 0;
对于一个数B,B^0=B。所以,这只要将所有数字依次异或最后得到的值就是答案啦。
代码
class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
int len = nums.length;
for(int i = 0; i < len; i++) {
ans ^= nums[i];
}
return ans;
}
}
网友评论