最近,我在Leetcode上遇到了this问题,并想出了一个需要澄清的解决方案:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int result = 0;
for(auto & c : nums) {
result ^= c;
}
return result;
}
};
首先,为了弄清楚我应该对这个问题使用XOR操作,我应该注意什么样的关键字?
另外,为什么 vector 中的所有项目彼此进行XOR运算却得到了一个不重复的项目?
谢谢大家的答复,以下是有关其他感兴趣的人的按位属性的更多信息:More bitwise info
最佳答案
A ^ 0 == A
A ^ A == 0
A ^ B == B ^ A
(A ^ B) ^ C == A ^ (B ^ C)
(3)和(4)一起意味着对数字进行
xor
编码的顺序无关紧要。这意味着,例如
A^B^X^C^B^A^C
等于A^A ^ B^B ^ C^C ^ X
。由于(2)等于
0^0^0^X
。由于(1)等于
X
。我认为没有任何特定的关键字可以帮助您识别此类问题。您只应该了解XOR的上述属性。
关于c++ - 异或操作直觉,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41963898/