只出现一次的数字
题目描述:
线性的时间复杂度,即为O(n),不使用额外辅助空间,即空间复杂度为O(1)。
异或运算:针对二进制而言的,如果是十进制,需要先转化为二进制,然后再进行运算,“相同为0,不同为1”,如果十进制相同,二进制必然也相同,0跟任何数异或运算,结果为那个数本身,题目中说除了某个元素只出现一次以外,其余每个元素均出现两次,则可以让数组中的所有元素做异或运算,得到的最后结果就是那个只出现了一次的元素,代码如下:
public int singleNumber(int[] nums) {
int tem = 0;
for(int i=0;i<nums.length;i++) {
tem ^= nums[i];
}
return tem;
}