您的位置:首页 > 其它

Single Number(leetcode)

2017-10-31 16:47 169 查看

Single Number

Single Number
题目

解决
通过记录出现次数判断

异或

题目

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?

解决

1. 通过记录出现次数判断

class Solution {
public:
int singleNumber(vector<int>& nums) {
int num = nums.size();
unordered_map<int, int> array;
for (int i = 0; i < num; i++) {
// 先将所有数字出现次数初始化为0
array[nums[i]] = 0;
}
for (int i = 0; i < num; i++) {
// 统计数字的出现次数
array[nums[i]]++;
}
for (int i = 0; i < num; i++) {
if (array[nums[i]] == 1) {
return nums[i];
}
}
}
};


2. 异或

异或的运算规律是
相同为0,不同为1
,这样两个相同的数异或得到的结果就是0。

所以我们将数组
array
中的数全部异或,最后得到的结果一定是出现了一次的数。

class Solution {
public:
int singleNumber(vector<int>& nums) {
int result = nums[0];
int num = nums.size();
for (int i = 1; i < num; i++) {
result = result ^ nums[i];
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: