您的位置:首页 > 其它

[Leetcode从零开刷]136. Single Number

2018-01-17 11:43 387 查看
题目来源:

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
b3a1
>& 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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: