剑指offer第二版-不使用新的变量完成交换两个原有变量的值

本系列导航:剑指offer(第二版)java实现导航帖

面试题:不使用新的变量完成交换两个原有变量的值

题目要求:
不使用新的变量完成交换两个原有变量的值。

解题思路:
有加减法与亦或法两种,其实思路是一致的。推荐亦或法,不仅仅是代码上更简单,而且亦或的运算在理论上也要比加减法更快。

package chapter6;

/**
 * Created with IntelliJ IDEA
 * Author: ryder
 * Date  : 2017/8/20
 * Time  : 21:39
 * Description:不使用新的变量,交换两个原有变量的值
 **/
public class P312_ExchangeTwoNumbers {
    public static void main(String[] args){
        //基于加减法
        int a = 3;
        int b = 5;
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println("a="+a+",b="+b);

        //基于异或法
        a = 3;
        b = 5;
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("a="+a+",b="+b);
    }
}

运行结果

a=5,b=3
a=5,b=3

推荐阅读更多精彩内容