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?
这道题很明显考查的是位操作。
A xor A =0
建议和这一道题leetcode 260. Single Number III 位操作 和 leetcode 137. Single Number II 一起学习。
代码如下:
public class Solution
{
//这个问题就是考的是位运算, & and位运算 | or位运算 ~非位运算 ^xor位运算
public int singleNumber(int[] nums)
{
int res=0;
for(int i=0;i<nums.length;i++)
res = res ^ nums[i];
return res;
}
}
下面是C++的做法,本体就是一个典型的位运算的做法
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <climits>
using namespace std;
class Solution
{
public:
int singleNumber(vector<int>& nums)
{
int a = nums[0];
for (int i = 1; i < nums.size(); i++)
a = a^nums[i];
return a;
}
};