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个出现1次,其他都出现两次。请找出这个例外的整数。
算法的时间复杂度应该是线性的,并且无须使用额外的内存。
解题思路:
先排序,排序的实现是快排,时间复杂度符合要求。
排序后对比每对偶数位和奇数位是否相同,如果不同就返回。
如果是最后一位数,也返回。一个循环,线性时间符合要求。
class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size(); i = i+2)
{
if(i%2==0)
{
if(nums[i]!=nums[i+1])
{
return nums[i];
}
}
else
{
if(i == nums.size()-1)
{
return nums[i];
}
}
}
}
};