题目来源:
leetcode
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?
这个题很简单,主要事给出一组整数,其中只有一个整数只出现一次,其余所有整数都会出现两次,返回这个只出现一次的整数。
我们指导对于异或操作符:
N^N = 0;
0^N = N;
a^b = b^a;
则我们遍历异或数组所有数:
0^a[1]^a[2]^a[3]…. = a[?] 直接返回单个的数。
cpp:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int num = 0;
int N = nums.size();
for(int i = 0;i<N;i++)
{
num = num^nums[i];
}
return num;
}
};
类似的java:
class Solution {
public int singleNumber(int[] nums) {
int N = nums.length;
int result = 0;
for (int i = 0; i<N; i++)
{
result ^=nums[i];
}
return result;
}
}
class Solution {
public int singleNumber(int[] nums) {
int result =0;
for(int i:nums)
{
result ^=i;
}
return result;
}
}