136. Single Number
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Subscribe to see which companies asked this question
//参考解
int singleNumber(int A[], int n) {
int result = 0;
for (int i = 0; i<n; i++)
{
result ^=A[i];
}
return result;
}
//解1 超时
class Solution {
public:
int singleNumber(vector<int>& nums)
{
int n=nums.size();
std::cout<<n<<std::endl;
if (n==1)return nums[0];
bool flag =0;
int p;
for(int i=0;i<n;i=i+2)
{
if(i)
std::cout<<nums[i-1]<<",";
p=nums[i];
std::cout<<p<<",";
flag =0;
for(int j=i+1;j<n;j++)
{
if(nums[j]==p)
{
swap(nums[j],nums[i+1]);
flag =1;
break;
}
}
if (flag==0)break;
}
return p;
}
};
//解2
class Solution {
public:
int singleNumber(vector<int>& nums)
{
int n=nums.size();
int p;
if (n==1)return nums[0];
else
{
p=nums[0]^nums[1];
}
for(int i=2;i<n;i++)
{
p=p^nums[i];
}
return p;
}
};