本系列導(dǎo)航:劍指offer(第二版)java實(shí)現(xiàn)導(dǎo)航帖
面試題:不使用新的變量完成交換兩個(gè)原有變量的值
題目要求:
不使用新的變量完成交換兩個(gè)原有變量的值。
解題思路:
有加減法與亦或法兩種,其實(shí)思路是一致的。推薦亦或法,不僅僅是代碼上更簡單,而且亦或的運(yùn)算在理論上也要比加減法更快。
package chapter6;
/**
* Created with IntelliJ IDEA
* Author: ryder
* Date : 2017/8/20
* Time : 21:39
* Description:不使用新的變量,交換兩個(gè)原有變量的值
**/
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);
}
}
運(yùn)行結(jié)果
a=5,b=3
a=5,b=3