java中两个变量之间交换方法总结


今天刷算法题:一个简单的问题如下:

请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值。

给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组。

测试样例:
[1,2]
返回:[2,1]
是不是很简单。。。。。。。。

我首先 脑海里想到的解决办法是:

import java.util.*;

public class Exchange {
    public int[] exchangeAB(int[] AB) {
        // write code here
        int temp=AB[0];
        AB[0]=AB[1];
        AB[1]=temp;
        return AB;
    }
}
完美解决问题,但是我们题目要求的是不能额外定义变量哦。。。。虽然实现了功能,但是并不是它的要

于是我又继续想了一下,如下:

import java.util.*;

public class Exchange {
    public int[] exchangeAB(int[] AB) {
        // write code here
        AB[0]=AB[0]+AB[1];
        AB[1]=AB[0]-AB[1];
        AB[0]=AB[0]-AB[1];
        return AB;
    }
}

既然加减可以,那么乘除应该也是可以的,代码如下:

import java.util.*;

public class Exchange {
    public int[] exchangeAB(int[] AB) {
        // write code here
        AB[0]=AB[0]*AB[1];
        AB[1]=AB[0]/AB[1];
        AB[0]=AB[0]/AB[1];
        return AB;
    }
}


咦,这次好像满足了题目的要求。。。。想一想还有没有其他的解决办法呢?

还真有:如下:

采用的是异或的思想,java中我们一个数如果异或同一个数两次,那么得到的还是原来的数。

import java.util.*;

public class Exchange {
    public int[] exchangeAB(int[] AB) {
        // write code here
        AB[0]=AB[0]^AB[1];
        AB[1]=AB[0]^AB[1];
        AB[0]=AB[0]^AB[1];
        return AB;
    }
}

暂且想到这四种方法,在此留个影,希望帮助自己和有需要的人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值