编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
示例:
输入: numbers = [1,2]
输出: [2,1]
提示:
numbers.length == 2
-2147483647 <= numbers[i] <= 2147483647
方法一: 使用 ^ (异或)运算符
异或记住一个口诀:同0异1
int a=10,b=1;
a^=b;
b^=a;
a^=b;
cout<<a<<end<<b; //输出结果是 1 10
解释:
a的二进制表示形式为: 1010
b的二进制表示形式为: 0001
经过 a^=b 的运算,a变为 1011
b^=a 得出b为 1010
a^=b 得出a为 0001
方法二: 使用加减解决(但相加之后数据有可能溢出)
int a=2,b=3;
a=a+b; //a现在为5
b=a-b; //b=5-3=2 b现在等于2(先计算等号右边的式子,此时的b还是一开始的3)
a=a-b; //此时等号右边的式子的b为上一行的式子的结果,即2,a为5,计算之后a为3
cout<<a<<" "<<b<<endl; //输出 3 2