在不使用第三个变量的情况下交换两个数的值

  解法一:加减法

    int a = 1, b = 10;
    a = a + b;    // a = 1 + 10 = 11 
    b = a - b;    // b = 11 - 10 = 1
    b = a - b;    // a = 11 - 1 = 10

  这种解法是比较容易想到的方法,也比较好理解。

  解法二:异或法

    int a = 1, b = 10;
    a = a ^ b;    // a = 0001 ^ 1010 = 0100
    b = a ^ b;    // b = 0100 ^ 1010 = 0001 = 1
    a = a ^ b;    // a = 0100 ^ 0001 = 1010 = 10

  异或运算:相同为1,不同为0。在计算机中存储方式是二进制,利用二进制的异或运算能交换两个数的值。

上一篇:Java Unit Test - Mockito mock静态方法


下一篇:73递增子序列(491)