算法分享第3题

题目:给定两个整数a和b,交换这两个数字,要求不引入第三个变量
如:定义a=1、b=2 交换后 a=2、b=1




















思路:

  • 要求不引入第三方变量,肯定要用到一些技巧;
  • 已知的常用技巧如加减法、位运算之类的先拿来试一试.

方法一:使用加减法实现

// A+B可能会越界 - 不推荐此方法,只领悟其思路
public void swap() {
    int a = 1;
    int b = 2;
    a = a + b;
    b = a - b;
    a = a - b;
}

方法二:使用位 异或运算 来实现

// 只能算是奇技淫巧,对速度的提升无帮助,可参考其他文章的解释,这里不过多阐述
public void swap() {
    int a = 1;
    int b = 2;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容