方法1: a=a+b; b=a-b; a=a-b;
vector<int> swapNumbers(vector<int>& numbers) {
vector<int> ans = numbers;
ans[0] += ans[1]; //相加后可能会超出int的范围!!!
ans[1] = ans[0] - ans[1];
ans[0] = ans[0] - ans[1];
return ans;
}
方法2: 方法1改进,a=a-b; b=a+b; a=-(a-b);
vector<int> swapNumbers(vector<int>& numbers) {
vector<int> ans = numbers;
ans[0] -= ans[1];
ans[1] = ans[0] + ans[1];
ans[0] = -(ans[0] - ans[1]);
return ans;
}
方法3: a=(a+b)-(b=a),一步到位,本质与方法1一样;
vector<int> swapNumbers(vector<int>& numbers) {
vector<int> ans = numbers;
ans[0] = (ans[0] + ans[1]) - (ans[1] = ans[0]); //相加后可能会超出int的范围!!!
return ans;
}
方法4: 异或,a=a^b; b=b^a; a=a^b;
vector<int> swapNumbers(vector<int>& numbers) {
vector<int> ans = numbers;
ans[0] = ans[0] ^ ans[1];
ans[1] = ans[0] ^ ans[1];
ans[0] = ans[0] ^ ans[1];
return ans;
}
方法2用时最短。