一看到 “不需要额外的空间 ” 就应该往位运算符上想。
异或运算的特点:两个相同的数字异或,结果为0。
思路:因为数组中除了一个元素只出现一次之外,其它的元素都出现两次,如果把所有的数都异或,相同的数字异或为0,最后只剩下出现一次的数字,它和0异或,结果就是它本身。
class Solution {
public int singleNumber(int[] nums) {
//因为数组中除了一个元素只出现一次之外,其它的元素都出现两次,如果把所有的数都异或,相同的数字异或为0,最后只剩下出现一次的数字,它和0异或,结果就是它本身。
int result = 0;
for(int num: nums)
{
result = result ^ num;
}
return n;
}
}