给你一个 非空 整数数组 nums
,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
思想:先将vector数组进行排序,通过两个变量分别记录数字与个数,如果该数字个数已经达到两个,则中间变量自动替换为下一个数,最后返回中间变量。
代码(C++)部分类:
class Solution {
public:
typedef long long LL;
int singleNumber(vector<int>& nums) {
// 排序 通过迭代器
sort(nums.begin(), nums.end());
// 记录个数和数字
LL a = 0, b = nums[0];
for(int i = 0; i < nums.size(); i ++)
{
if(b == nums[i])
{
a ++;
}else
{
if(a == 2)
{
b = nums[i];
a = 1;
}
}
}
return b;
}
};