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?
最快算法:
// This is classical interview question
// As we know, the same number XOR together will be 0,
// So, XOR all of numbers, the result is the number which only appears once.
int s = 0;
for (auto it = nums.begin(); it != nums.end(); it++)
{
s ^= *it;
}
return s;
我的算法:
class Solution {
public:
int singleNumber(vector<int>& nums) {
for(int i = 0; i < nums.size() - 1; i += 2)
{
int j = 0;
for(j = i + 1; j < nums.size(); j++)
{
if(nums[i] == nums[j] && i != j)
{
swap(nums[j], nums[i+1]);
break;
}
}
if(j == nums.size())
{
return nums[i];
}
}
return nums.back();
}
};
Status:
Time Limit Exceeded