不占用任何额外空间的情况下交换两个数的值

来源:互联网 发布:python语言入门 pdf 编辑:程序博客网 时间:2024/06/05 17:39

问题:

给你两个整数,比如 a = 10, b = 20,在不占用任何额外空间的条件下交换两个数的值。

思路:

首先,问题看起来是挺不可思议,但是也是挺有趣的。既然不能占用任何空间,只能在已有的变量上打主意。这里有两个方法,看完代码自己就能马上明白,所以就不多解释了。

方法1:

int a = 10;int b = 20;a = a^b;b = b^a;a = a^b;

这个方法用到了一个事实:任何数自己和自己异或(XOR)后等于0.

方法2:

int a = 10;int b = 20;a = a + b;b = a - b;a = a - b;

这两种方法最好选用第一种,因为第二种会有溢出的情况发生。