如何不引入第三个中间变量进行两数交换

但在大厂面试中,有一道非常经典的数字交换题目:如何在不引入第三个中间变量的情况下,完成两个数字的交换。
这里可以用到一个数学上的技巧:

a = a + b;
b = a - b;
a = a - b;

除了这种先加后减的写法,还有一种先减后加的写法:

a = b - a;
b = b - a;
a = a + b;

但这两种方式都可能导致数字越界。
更好的方案是通过位运算完成数字交换:

a = a ^ b;
b = b ^ a;
a = a ^ b;

你可能感兴趣的:(算法)