- 只出现一次的数字
已解答
简单
相关标签
相关企业
提示
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间'
解题思路
使用与或操作,依次进行与或,那么重复两次的数经过与或后变成0。最后只留下一个单独的数。
如数组 2 2 1
2 :010
2: 010
与或结果:000.
cpp
class Solution {
public:
int singleNumber(vector<int>& nums) {
//使用或非操作。依次进行或非运算,重复的数则或非为0
int num = nums.size();
int single = nums[0];
for(int i=1;i<num;i++)
{
single ^= nums[i];
}
return single;
}
};