数列L中有n个整数,其中K个数字出现了两次,1个数字出现了一次,所以n=2k+1;请在使用O(1)空间的前提下,尽快找出只出现一次的那个数字,并说明算法的复杂度。
既然是空间复杂度的限制
所以
int res = 0;
for( int i = 0; i < n; i++ ){
res ^= arr[i];
}
return res;
最终有
1.两个相同的数异或结果为0
2.0与任何数异或结果还是这个数
数列L中有n个整数,其中K个数字出现了两次,1个数字出现了一次,所以n=2k+1;请在使用O(1)空间的前提下,尽快找出只出现一次的那个数字,并说明算法的复杂度。
既然是空间复杂度的限制
所以
int res = 0;
for( int i = 0; i < n; i++ ){
res ^= arr[i];
}
return res;
最终有
1.两个相同的数异或结果为0
2.0与任何数异或结果还是这个数