题目:无缓存交换
请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值。给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组。
测试样例:
[1,2]
返回:
[2,1]
分析:若不使用任何临时变量,可采用异或的方式实现。
源代码:
import java.util.*;
public class Exchange {
public int[] exchangeAB(int[] AB) {
/*
若有a,b两个数,则通过以下过程实现交换:
a=a^b;
b=a^b=a^b^b=a^0=a;
a=a^b=a^b^a=b^0=b;
*/
AB[0]=AB[0]^AB[1];
AB[1]=AB[0]^AB[1];
AB[0]=AB[0]^AB[1];
return AB;
}
}