我觉得我是一个傻子。因为题目限制了用线性复杂度且不扩展内存,一开始我想的是用nums[nums[i]]的正负号标记nums[i]出现的次数,后来发现给出的原序列没有说本来就是正整数。然后想了很久都没想出来。其实这个题的关键在于只有一个数是不重复的,已知A XOR A=0,A XOR B XOR A=B,只要把所有数连续异或就好了。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int num = 0;
for (int i = 0; i < n; ++i)
num ^= a[i];
return num;
}
};
本文介绍了一种使用异或运算解决特定数组问题的方法,该问题要求在O(n)时间内找出唯一不重复的元素。文章通过分析给出了简洁高效的解决方案,并附带C++代码实现。
499

被折叠的 条评论
为什么被折叠?



