但在大厂面试中,有一道非常经典的数字交换题目:如何在不引入第三个中间变量的情况下,完成两个数字的交换。
这里可以用到一个数学上的技巧:
java
a = a + b;
b = a - b;
a = a - b;
除了这种先加后减的写法,还有一种先减后加的写法:
java
a = b - a;
b = b - a;
a = a + b;
但这两种方式都可能导致数字越界。
更好的方案是通过位运算完成数字交换:
java
a = a ^ b;
b = b ^ a;
a = a ^ b;