题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
解题方法1:暴力法
解题代码:
class Solution {public:
int singleNumber(vector<int>& nums) {
int i,j,res;
int len=nums.size();
for(i=0;i<len;i++)
{
res=nums[i];
for(j=0;j<len;j++)
{
if(j==i)
continue;
if(res==nums[j])
break;
}
if(j==len)
return res;
}
return -1;
}
};
结果:
解题方法:异或法
解题思路:所有数字进行异或,相同的数字符号位一样,所以异或为000,最终结果就只为singlenumber的符号位。
解题代码:
class Solution {public:
int singleNumber(vector<int>& nums) {
int len=nums.size();
int res=nums[0];
for(int i=0;i<len-1;i++)
res=res^nums[i+1];
return res;
}
};
结果: