变量a和b的值互换java_经典面试题:不使用其他变量实现a和b的数值互换

在面试C#程序开发过程或者java程序开发的过程中,很多人会遇到一个经典面试题:不使用第三方变量,交换变量a和b的值。此面试题主要考察应聘者的逻辑思维。一般情况下实现变量a和变量b的值互换会使用到第三方变量c。此文将简要介绍此面试题的思路以及解答方法。

(1)实现变量a和变量b的值互换,常规的方法是使用第三方变量c,具体实现代码如下(带详细解析):

int a=10;

int b=20;

int c=a;//使用第三方变量c先保存a的数值。

a=b;//将b的数值赋值给a变量。

b=c;//将c的数值赋值给b变量,因为c中存储的值为a变量的初始值,因此此步操作之后即将变量a和变量b的值互换成功。

(2)如果不使用第三方变量,只能有a和b两个变量相互操作,直接赋值肯定不行。

分析思路:首先直接使用其中一个变量对另一个变量赋值,发现两者变量值一样,被赋值的变量的值被覆盖,因此此方案Pass掉。

再进行深入一步分析,可以发现两者数字变量之间的差值绝对值是固定的,不管变量a和变量b是否互换,例如a=10,b=5,在互换之前,a-b的差值绝对值为5,两者互换后,a-b的差值为-5,其绝对值也为5。因此可从此思路入手解决。

具体实现代码如下:

int a=10;

int b=20;

a=a-b;//求出两者之间的差值为-10

b=b+a;//此步采取b变量加上两者差值,即可实现b变量换值成功,此步执行后结果为b=10,此时的b相当于开始的a变量

a=b-a;//用当前b变量减去两者差值即为起始的b变量值,此步操作结果a=20

结论:此题解法主要依据两个数值之间的差值不变来解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值