题目
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?
class Solution {
public:
int singleNumber(vector<int>& nums) {
}
};
思路
先排序,算法复杂度为sort的O(nlog2n),这道题还可以用哈希表,时间复杂度更低,以后再更新。
代码
class Solution {
public:
int singleNumber(vector<int>& nums) {
int size = nums.size();
sort(nums.begin(), nums.end());
for (int i = 1; i < size; i += 2) {
if (nums[i-1] != nums[i]) {
return nums[i-1];
}
}
return nums[size-1];
}
};