136. Single Number
链接
题意
给定一个数组,里面的元素除了一个只出现一次之外,都出现了两次。找出只出现一次的那个元素。
思路
大概最好的解法就是用位运算了。而异或运算正好符合这道题的特征。两个相同的数进行异或结果为0,那么可以将数组中的所有数进行异或(异或还符合交换律),出现两次的数会被抵消掉,剩下的就只有那个“单身数”了
代码
C:
int singleNumber(int* nums, int numsSize) {
int ans = 0;
for(int i = 0; i < numsSize; i++) {
ans ^= nums[i];
}
return ans;
}
效率
Your runtime beats 19.29% of c submissions