它是如何进行交换的?
A = A + B
B = A + B
A = B +一
我不同意它换成书!
书中的选项包括“a和b的值的互补”,“否定和b”。希望这些选项也不令人满意吗?
交换是使用XOR执行的,XOR通常在圆圈内写为加号;例如:
a := 5
b := 7
a := a xor b (2)
b := a xor b (5)
a := b xor a (7)
正确的算法应该是:
a = a + b
b = a - b
a = a - b
实际上,它可以通过两种方式完成:
int a = 5, b = 10;
使用加法(+)和减法( - )
a = a + b;
b = a - b;
a = a - b;
使用多个(*)和分区(/)
a = a * b;
b = a / b;
a = a / b;
我最近接受了java更新的采访,面试官让我进行两个数字的交换(但是在一行中)。
也可以在一行中执行两个数字的交换,而不使用临时变量。
逻辑很简单,
x在同一行中加y,y指定为x,用它们的和减去。
在执行这一行算术后,数字被交换。 (仅限一行)
public class SwapInOneLine {
public static void main(String[] args) {
int x = 10; int y = 20;
System.out.println("Before Swaping: x = " + x + " and y= " + y);
x = x + y - (y = x);
System.out.println("After Swaping: x = " + x + " and y= " + y);
}}
输出:
在交换之前:x = 10且y = 20
交换后:x = 20,y = 10