上面提到的问题如下:给定两个整数 x1 和 x2,找到另一个整数 x3,它与 x1 和 x2 都不同,不使用 if 关键字。
我的解决方案是基于对整数的按位运算,以及当且仅当两个位不相等时两个位之间的 XOR 将返回 1 的事实。
这个解决方案有效吗?你能找到更好的解决方案吗?当然,运行时考虑和内存消耗应该尽可能好。
注意:三元运算和比较(即 - != , == )也是不允许的
提前致谢,
家伙。
我的解决方案:
int foo(int x1,int x2)
{
// xor
int x3 = x1 ^ x2;
// another xor
x3 = x3 ^ x2;
// not
x3 = ~x3;
return x3;
}