题目:给定两个整数a和b,交换这两个数字,要求不引入第三个变量
如:定义a=1、b=2 交换后 a=2、b=1
思路:
- 要求不引入第三方变量,肯定要用到一些技巧;
- 已知的常用技巧如加减法、位运算之类的先拿来试一试.
方法一:使用加减法实现
// A+B可能会越界 - 不推荐此方法,只领悟其思路
public void swap() {
int a = 1;
int b = 2;
a = a + b;
b = a - b;
a = a - b;
}
方法二:使用位 异或运算 来实现
// 只能算是奇技淫巧,对速度的提升无帮助,可参考其他文章的解释,这里不过多阐述
public void swap() {
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
}