概况知识点
运算符 | 作用 |
---|---|
l | 合取 |
& | 析取 |
^ | 异或 |
实例一
num & 1
求num的最后一位num1 ^ num2
若两数相同,结果为0
题目1
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
int singleNumber(vector<int> &nums) {
int ans = 0, i;
for (i = 0; i < nums.size(); i++) {
ans = ans ^ nums[i];
}
return ans;
}
题目2
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现三次。找出那个只出现了一次的元素。
int singleNumber(vector<int> &nums) {
int ans = 0, i, j;
for (i = 0; i < 32; i++) {
int sum = 0;
for (j = 0; j < nums.size(); j++) {
sum += (nums[j] >> i) & 1;
}
ans ^= (sum % 3) << i;
}
return ans;
}