题目:
twice
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
思路:这道题目,算法时间复杂度要O(n),而且不能有二外的存储空间。研读题目会发现本题数据有个特点就是数组中有且只有一个数字没有重复项,那么根据
异或(XOR)的衍生的规律:
同一变量与另一变量和其异或值异或等于另一个数,则可以很轻松地实现相关代码。
代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int result = 0;
for(int i = 0;i<nums.size();i++)
result^=nums[i];
return result;
}
};