不借助第三方变量交换两个数值

本文介绍了如何在编程中不使用额外变量,仅通过位运算实现两个数值的交换。常见方法包括利用异或操作,这种方法在面试中展现出高级思维,能有效简化代码并提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

交换两个数,一般人们都会觉得很Easy,程序手到擒来,思想为:借助第三方变量去交换两个数,代码如下:

void changeNum(int x, int y){
    System.out.println("交换之前:x="+x+", y="+y);
    int temp = x;
    x = y;
    y = temp;
    System.out.println("交换之后:x="+x+", y="+y);
}
可是面试就是面试嘛,不走寻常路,常常会要求程序员不要借助第三方变量去交换两个数,于是一般程序员小酌一会,思想又来了:

初级思路1:两个数x, y;利用其中一个变量比如x去保存这两个数的和,然后再用和x去减去y,保存于y,这样y的值就变为最初x的值,然后再用和x去减去变换后y就得到最初y的值存于x即可完成,代码如下:

void changeNum(int x, int y){
    System.out.println("交换之前:x="+x+", y="+y);
    x = x + y;
    y = x - y;
    x = x - y;
    System.out.println("交换之后:x="+x+", y="+y);
}

初级思路2:类似于上面的思路;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值