场景
在做一些算法题的时候,我们经常需要对数组中的两个数进行交换。如一下两个变量
int a=1;
int b=2;
我们希望交换后的结果为
a=2;
b=1;
以下列举了几种比较常见的使用方式,
交换方式
方式一(使用中间变量)
int temp = a;
a=b;
b=temp;
方式二(使用加法)
a=a+b;
b = a-b;
a=a-b;
方式三(使用异或)
异或是两个数进行按位异或,不同为1,相同为0;
a=a^b;
b =a^b;
a=a^b;
异或和加法的使用限制
在leetcode上有这样一道题
在这里使用异或或者加法的时候会有问题
使用临时变量则不会有问题。
处错原因是对数组的同一个位置进行了操作。