题目
题目链接
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
示例:
输入: numbers = [1,2]
输出: [2,1]
提示:
numbers.length == 2
解题思路 1
创建数组开辟了一点点点的内存难道不可以忽略不计吗
代码
class Solution {
public int[] swapNumbers(int[] numbers) {
return new int[]{numbers[1],numbers[0]};
}
}
解题思路 2
利用异或操作
- a ^ b ^ b = a
- a ^ b ^ a = b
- a ^ a = 0
- 0 ^ a = a
- 异或满足交换律 结合律
代码
class Solution {
public int[] swapNumbers(int[] numbers) {
numbers[0] = numbers[0] ^ numbers[1];
numbers[1] ^= numbers[0];
numbers[0] ^= numbers[1];
return numbers;
}
}