仅使用两个变量交换两个数字

问题描述 投票:3回答:4

它是如何进行交换的?

A = A + B

B = A + B

A = B +一

我不同意它换成书!

书中的选项包括“a和b的值的互补”,“否定和b”。希望这些选项也不令人满意吗?

algorithm swap
4个回答
7
投票

交换是使用XOR执行的,XOR通常在圆圈内写为加号;例如:

a := 5
b := 7

a := a xor b (2)
b := a xor b (5)
a := b xor a (7)

9
投票

正确的算法应该是:

a = a + b 
b = a - b
a = a - b 

0
投票

实际上,它可以通过两种方式完成:

int a = 5, b = 10;

使用加法(+)和减法( - )

a = a + b;
b = a - b;
a = a - b;

使用多个(*)和分区(/)

a = a * b;
b = a / b;
a = a / b;

0
投票

我最近接受了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

© www.soinside.com 2019 - 2024. All rights reserved.