给定一个int数组AB,要求编写一个函数,不使用任何临时变量直接交换第零个元素和第一个元素的值。并返回交换后的数组。
测试样例:
[1,2]
返回:[2,1]
class Exchange { public: vector<int> exchangeAB(vector<int> AB) { // write code here AB.insert(AB.end(), AB.begin(), AB.end()); AB.erase(AB.begin()); AB.erase(AB.end() - 1); return AB; } };
我的方法还是最low的。。
public int[] exchangeAB(int[] AB) {
// write code here
AB[0] = AB[0] + AB[1];
AB[1] = AB[0] - AB[1];
AB[0] = AB[0] - AB[1];
return AB;
}
class Exchange: def exchangeAB(self, AB): AB[0], AB[1] = AB[1], AB[0] return AB
通过两个计算两个数的和与差来交换a,b的位置 (a,b)----(a+b,b)----(a+b,a-b)------(b,a-b)----(b,a) import java.util.*; public class Exchange { public int[] exchangeAB(int[] AB) { // write code here AB[0]=AB[0]+AB[1]; AB[1]=AB[0]-2*AB[1]; AB[0]=(AB[0]-AB[1])/2; AB[1]=AB[0]+AB[1]; return AB; } }
import java.util.*; public class Exchange { public int[] exchangeAB(int[] AB) { // write code here AB[0]=AB[0]^AB[1]; AB[1]=AB[0]^AB[1]; AB[0]=AB[0]^AB[1]; return AB; } }